如何从asp:BoundField中获取GridView的值?

14

我有一个GridView,从连接两个表的数据源检索值,并且我需要在代码后端获取这些值并将它们作为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>
3个回答

28
你可以尝试使用 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; 
}

6

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

使用数据键获取它:

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

您还可以在“行数据绑定事件”中获取数据:

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();
     }
}

4
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)。 - Zeek2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接