我创建的数据表保存在会话和放大器中分配给gridview。我必须提取那些记录,因为我已经编写了如下代码,但它的值为null:
//To find gridview in Formview1
GridView GridView1 = (GridView)Formview1.FindControl("GridView1");
GridView1.DataSource = (DataTable)Session["tabdetails"];
GridView1.DataBind();
string str, str1, str2, str3, str4, str5, str6;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
str = GridView1.Rows[i].Cells[0].Text;
str1 = GridView1.Rows[i].Cells[1].Text;
str3 = GridView1.Rows[i].Cells[2].Text;
str4 = GridView1.Rows[i].Cells[3].Text;
str5 = GridView1.Rows[i].Cells[4].Text;
}
请建议我做正确的改变? 谢谢。 Asp.net c#
答案 0 :(得分:2)
您可以为每个循环使用
提取网格视图行foreach (GridViewRow GR in GridView1.Rows)
{
if (GR.RowType == DataControlRowType.DataRow)
{
string myField = GR.Cells[1].Text;
// You can also find grid view inside controls here
TextBox tb = (TextBox)tt.FindControl("TextBox1");
}
}
答案 1 :(得分:1)
使用数据键存储您需要检索的值。
<asp:GridView ID="GridView1" runat="server" DataKeyNames="SomeColumnName, AnotherColumnName, SomeOtherColumnName" ... >
在您的代码中:
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
string str = GridView1.DataKeys[row.RowIndex]["SomeColumnName"];
}
答案 2 :(得分:0)
如果gridview单元格中有控件,则Text值将为空。如果您有一个简单的文本框,则应修改代码以使用“Controls”集合。
str = ((TextBox)GridView1.Rows(i).Cells(0).Controls(1)).Text;
使用索引[1]代替[0],因为索引[0]通常是文字控件。