Gridview模板数据绑定后,获取每个单元格的值

我在Gridview模板数据绑定后: <asp:TemplateField HeaderText="班级"> <ItemTemplate> <%#DataBinder.Eval(Container.DataItem, "classname")%> </ItemTemplate> </asp:TemplateField>绑定的是dataread SqlDataReader dr; dr = manger.TES_Getdr(sql); GrV_vote.DataSource = dr; GrV_vote.DataBind(); 然后获取某一单元格的值: string gid =this. GrV_vote.Rows[1].Cells[4].Text.ToString();页面显示数据正常。获取后gid=“”;没有数据注意:gridview中还有有其他控件,不是获取控件中的值。要的是gridview中的其他单元格中的值。

给你一个方法吧,你现在是直接用 <%#DataBinder.Eval(Container.DataItem, "classname")%> 绑定的。你不妨把它绑定在控件上,如<lable id="lblclassname" runat="server" Text='<%#Eval"classname")%>'>。
这样问题就转换成了从GridView里面寻找控件,代码如下:
2.如果你是在后台更新事件里面,可以直接这样获取:
/// <summary>
/// 更新事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdvUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string userId = gdvUserInfo.DataKeys[e.RowIndex].Value.ToString();
Lable lblclassname= (Lable )gdvUserInfo.Rows[e.RowIndex].Cells[0].FindControl("lblclassname");
string sclassname=lblclassname.Text;//sclassname的值
}
1.如果你是在后台其他事件里面,你可以通过循环GridView获取:
DataTable dt1 = new DataTable("Table1");
dt1.Columns.Add("classname");
for (int i = 0; i < gdvUserInfo.Rows.Count; i++)
{
GridViewRow gRow = gdvUserInfo.Rows[i];
DataRow newRow = dt1.NewRow();
newRow[0] = ((Lable)gRow.FindControl("lblclassname")).Text; dt1.Rows.Add(newRow);
}
dt1.AcceptChanges();
foreach (DataRow row in dt1.Rows)
{
string sclassname+=row.ItemArray[0].ToString()+",";//sclassname的值
}
你参考参考,希望对你有帮助
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-05
this.GridView.rows[e.rowIndex].cells[0].Text 正解
第2个回答  2011-11-05
this.GridView.rows[e.rowIndex].cells[0].Text
相似回答