获取当前的GridView列值

时间:2011-10-09 14:27:41

标签: c# asp.net gridview

我有一些列的GridView。所有列都是boundfield,如:

            <asp:BoundField DataField="orderId" HeaderText="orderId" 
            SortExpression="orderId"></asp:BoundField>

最后一栏是:

                    <asp:LinkButton ID="LinkButton1" runat="server"    
  CommandName="" onclick="LinkButton1_Click" Text="Button"></asp:LinkButton>

如你所见,有一些方法的“onclick”......如:

        lbltest.Text = gv_order.Rows[gv_order.SelectedIndex].Cells[2].Text;

使用该代码我得到(offcourse)我在单元格号2中所选行上的内容。如何从单击按钮而没有“selceted row”的同一行(以及单元格编号2)获取值?例如:当我点击第2行的按钮时 - 我得到该行的单元格2。

那可能吗?

1 个答案:

答案 0 :(得分:2)

如果您想以更干净的方式检索'orderid',可以使用CommandNameCommandArgument属性和OnRowCommand事件,如下所示:

        <asp:GridView (...) OnRowCommand="Gv_RowCommand" (...)>

...

        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select"
     CommandArgument='<%# Bind("orderId") %>' Text="Button"></asp:LinkButton>

并在代码背后:

protected void Gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
         int selectedOrderId = Convert.ToInt32(e.CommandArgument);
         // ... 
    }
}

我希望这是你想要做的。

修改 - 我对您的评论的回答:

然后,它稍微复杂一些,并以某种方式使用'selectedRow'。在我自己的代码中,我使用这种方法:

    <asp:GridView ID="gv1" (...) DataKeyNames="orderId,email,username"
         OnRowCommand="Gv_RowCommand" (...)>

            ...

    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select"
       CommandArgument='<%# DataBinder.Eval(Container,"RowIndex") %>' Text="Button">
</asp:LinkButton>

并在代码背后:

protected void Gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int selectedRowIndex = Convert.ToInt32(e.CommandArgument);
    if (e.CommandName == "Select")
    {
         int orderId = Convert.ToInt32(gv1.DataKeys[selectedRowIndex]["orderId"]);
         string email = gv1.DataKeys[selectedRowIndex]["email"].ToString();
         // ... 
    }
}