如何从Grid View中的单元格中获取值

时间:2015-11-20 10:42:12

标签: c# asp.net gridview

我在ASP.NET应用程序中使用了网格视图。

     <asp:GridView ID="grdView" runat="server">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:CheckBox ID="chkbox" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Jurisdiction">
        <ItemTemplate>
            <asp:Label ID="lblJurisdiction" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="License Number">
        <ItemTemplate>
            <asp:TextBox ID="txtLicenseNumber" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    </Columns>
   </asp:GridView>

在cs文件中

    protected void btnSave_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in grdView.Rows)
        {
            for (int i = 0; i < grdView.Columns.Count; i++)
            {
                String cellText = row.Cells[i].Text;
            }
        }
      }

请注意,上面的网格将由数据填充。现在我需要从已经填充的gridview获取数据。上面的代码不起作用。此外,我需要从标签,文本框,网格内的复选框值中检索。请帮忙 !!!

5 个答案:

答案 0 :(得分:1)

您可以使用FindControl方法检索控件的数据: -

protected void btnSave_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in grdView.Rows)
    {
        CheckBox chkbox = row.FindControl("chkbox") as CheckBox;
        Label lblJurisdiction = row.FindControl("lblJurisdiction") as Label;
        ..and so on

        //Finally retrieve the data like your normal control
        string labelText = lblJurisdiction.Text;
    }
}

答案 1 :(得分:0)

检查行类型是否为DataControlRowType.DataRow

 protected void btnSave_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in grdView.Rows)
        {       
             if (row.RowType == DataControlRowType.DataRow)
            {               
                for (int i = 0; i < grdView.Columns.Count; i++)
                {
                    String cellText = row.Cells[i].Text;
                }
            }
        }
      }

要获取TextBox,网格中的CheckBox值使用此

string TextBoxvalue = ((TextBox)GridViewID.Rows[i].FindControl("TextBoxName")).Text; 
string CheckBoxvalue = ((CheckBox)GridViewID.Rows[i].FindControl("CheckBoxName")).Text; 

答案 2 :(得分:0)

使用GridViewRow.FindControl方法。

foreach (GridViewRow row in grdView.Rows)
{
    // return you the check-box control from current row
    var chkbox = row.FindControl("chkbox");
}

答案 3 :(得分:0)

在您的代码.cs文件中,您缺少仅检查datarow。因为它将检查所有3个地方: -

1. Header
2. Body
3. Footer

任何一个地方都可能发生任何异常。

如果条件为after the for loop,请再添加一个,如下所示。

  

if(row.RowType == DataControlRowType.DataRow)               {

希望这篇文章对你有帮助:)。

答案 4 :(得分:0)

使用 细胞[I] .EditedFormatedValue