GridView определить значения строки щелкнул? - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть это gridview:

<div class="content">
    <asp:GridView ID="DocumentGrid" runat="server" AutoGenerateColumns="False" OnRowCommand="DocumentGrid_RowCommand" >
        <Columns>
            <asp:BoundField HeaderText="ID" DataField="ID" ItemStyle-Width="120px"/>
            <asp:ButtonField HeaderText="Download Link" Text="Download"/>
        </Columns>
    </asp:GridView>
</div>

Как вы можете видеть, DocumentGrid_RowCommand вызывается при нажатии кнопки «Скачать». Как я могу узнать, каковы значения строки, по которой был нажат?

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Если вы установите разметку следующим образом,

        <Columns>
            <asp:TemplateField HeaderText="Download">
                <ItemTemplate>
                    <asp:Button ID="btnDownload" CommandName="Download" CommandArgument='<%# Container.DataItemIndex %>'
                        runat="server" Text="Download" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>

в коде позади, вы можете проверить CommandArgument следующим образом:

if (e.CommandName == "Download")
{
    int index = Convert.ToInt32(e.CommandArgument);
}
1 голос
/ 29 декабря 2011

Если в GridView имеется более одного поля кнопки, установите атрибут CommandName.Таким образом, мы можем определить, какая кнопка нажата в событии RowCommand.Поэтому всегда устанавливайте атрибут commandName.

<Columns>
 <asp:BoundField HeaderText="ID" DataField="ID" ItemStyle-Width="120px"/>
 <asp:ButtonField HeaderText="Download Link" Text="Download" CommandName="cmd"/>
</Columns>

В обработчике событий RowCommand свойство GridViewCommandEventArgs.CommandArgument возвращает индекс строки, в которой нажата кнопка.

 protected void DocumentGrid_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmd")
        {
            int index = int.Parse(e.CommandArgument.ToString());
            GridViewRow row = DocumentGrid.Rows[index];
            if (row.RowType == DataControlRowType.DataRow)
            {
                Response.Write(row.Cells[0].Text);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...