RadGrid从项目模板按钮获取选定的行索引

bum*_*una 8 c# asp.net telerik

我正在使用Telerik控件进行项目.我正在试图找出如何在ItemTemplate按钮单击事件上获取所选行索引,如下面的标记:

<telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" 
    DataSourceID="cusGrid" GridLines="None" Skin="Default" AllowPaging="True" DataKeyValue="CustomerID" 
    PageSize="500" AllowMultiRowSelection="True" ShowStatusBar="true" >
        <MasterTableView AutoGenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="cusGrid">
            <RowIndicatorColumn>
                <HeaderStyle Width="20px"></HeaderStyle>
            </RowIndicatorColumn>
            <ExpandCollapseColumn>
                <HeaderStyle Width="20px"></HeaderStyle>
            </ExpandCollapseColumn>
            <Columns>
                <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn">
                    <ItemTemplate>
                        <asp:Button runat="server" Text="Select" OnClick="SelRecord" />
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
    ...
Run Code Online (Sandbox Code Playgroud)

通常GridView我会做一些像:

protected void SelRecord(object sender, EventArgs e)
{
    var gRow = (GridViewRow)(sender as Control).Parent.Parent;
    var key = string.Empty;
    if (gRow != null) { key = gRow.Cells[0].Text; }
}
Run Code Online (Sandbox Code Playgroud)

Telerik控件的等价物是什么?

Jam*_*son 8

使用CommandArgument,并使用OnCommand而不是OnClick获取行索引:

<asp:Button ID="Button1" runat="server" CommandArgument='<%#Container.ItemIndex%>' OnCommand="Button1_Command" ... />
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

protected void Button1_Command(object sender, CommandEventArgs e)
{
    GridDataItem item = RadGrid1.Items[(int)e.CommandArgument];
}
Run Code Online (Sandbox Code Playgroud)

  • 同意这种方法,这是迄今为止最简单的方法. (2认同)

小智 3

您可以使用CommandName=""代替OnClick.

还要添加onitemdatabound="RadGrid1_ItemDataBound"到主 telerik:RadGrid 标签。

然后在后面的代码中:

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem dataItem = e.Item as GridDataItem;

                int selectedRowIndex = dataItem.RowIndex;
    }
}
Run Code Online (Sandbox Code Playgroud)