【问题标题】:How to get GridView values from asp:BoundField?如何从 asp:BoundField 获取 GridView 值?
【发布时间】:2014-05-20 09:56:11
【问题描述】:

我有一个GridView,它从连接两个表的DataSource 中检索值,我需要在代码隐藏中获取这些值并将它们作为String 传递。关于什么是最好的方法的任何想法?下面是我在 aspx 中的GridView

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDsPoNumber" EnableModelValidation="True" Visible="True" 
        DataKeyNames="PO_NUMBER,SITE_NAME">
        <Columns>
            <asp:BoundField DataField="PO_NUMBER" HeaderText="PO_NUMBER" 
                SortExpression="PO_NUMBER" />
            <asp:BoundField DataField="SITE_NAME" HeaderText="SITE_NAME" 
                SortExpression="SITE_NAME" />
        </Columns>
</asp:GridView>

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    您可以尝试使用 foreach 循环来完成将 GridViewRow 类绑定到您的 GridView 源的要求。

    foreach (GridViewRow gr in GridView1.Rows)
    {         
        string cell_1_Value = gr.Cells[0].Text; 
        string cell_2_Value = gr.Cells[1].Text; 
    }
    

    【讨论】:

      【解决方案2】:

      如您所知,网格视图有多个行。因此,您可以从任何行中获取值。

      使用数据键获取它:

      var ponumber = GridView1.DataKeys[rowIndex].Values[0].ToString();
      var sitename = GridView1.DataKeys[rowIndex].Values[1].ToString();
      

      通过单元格获取:

      // easiest way, but not the most recommended.
      var ponumber = GridView1.Rows[rowIndex].Cells[0].Text; // try 0 or 1
      

      也可以在Row Data Bound Event中获取数据:

      protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
      {
           if(e.Row.RowType == DataControlRowType.DataRow)
           {
             var ponumber = GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString();
             var sitename = GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString();
           }
      }
      

      【讨论】:

        【解决方案3】:
        foreach (GridViewRow gr in userGrid.Rows)
        {
            CheckBox check = (CheckBox)gr.FindControl("chkSelect");
            if (check.Checked == true)
            {
                string order = userGrid.Rows[gr.RowIndex].Cells[3].Text;
                gl.updatetracking (order);
            }
        }
        

        【讨论】:

        • 为了将来参考,在 VB.NET 中,这一行: CheckBox check = (CheckBox)gr.FindControl("chkSelect");可以表示为 Dim check As CheckBox = DirectCast(row.FindControl("chkSelect"), CheckBox)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多