如何在asp.net c#中从gridview中提取行

时间:2011-08-17 13:22:35

标签: c# asp.net

我创建的数据表保存在会话和放大器中分配给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#

3 个答案:

答案 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]通常是文字控件。