Получить текущее значение столбца GridView - PullRequest
0 голосов
/ 09 октября 2011

У меня есть GridView с некоторыми столбцами. все столбцы имеют ограниченное поле, например:

            <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;

С этим кодом я получаю (разумеется) то, что имею в выбранной строке в ячейке № 2. Как я могу получить значение из той же строки (и из ячейки № 2), где кнопка нажата без «выделенной строки» ? пример: когда я нажимаю кнопку в строке 2 - я получаю ячейку 2 этой строки.

Это возможно?

1 Ответ

2 голосов
/ 09 октября 2011

Если вы хотите получить 'orderid' более чистым способом, вы можете использовать CommandName, CommandArgument свойства и 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();
         // ... 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...