RadGrid获取[GridClientSelectColumn]选中的Items

时间:2014-05-11 04:19:11

标签: c# asp.net telerik-grid

我想从[GridClientSelectColumn]循环并获取所有选中的复选框项,但即使检查了列,也没有任何行返回。谢谢你的帮助。

的.aspx

<telerik:RadGrid ID="RadGrid_1" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" CellSpacing="0" GridLines="None" 
    Skin="Outlook" AllowMultiRowSelection="True" AllowSorting="True">

    <ClientSettings>
        <Selecting AllowRowSelect="True" />
    </ClientSettings>

<Columns>
    <telerik:GridClientSelectColumn FilterControlAltText="Filter template_selected column" 
        UniqueName="template_selected">
    </telerik:GridClientSelectColumn>
    <telerik:GridBoundColumn FilterControlAltText="Filter ID column" 
        HeaderText="PHID" UniqueName="ID" Visible="False" 
        DataField="PHID">
    </telerik:GridBoundColumn>
    <telerik:GridBoundColumn FilterControlAltText="Filter Title column" 
        HeaderText="Title" UniqueName="Title" DataField="Title">
    </telerik:GridBoundColumn>
</columns>

.aspx.cs

protected void btn_Click(object sender, EventArgs e)
{
    string id;
    bool chec;
    foreach (GridDataItem item in RadGrid_1.SelectedItems)
    {
        CheckBox chk = (CheckBox)item["template_selected"].Controls[0];
        title = item["Title"].Text;
        chec = chk.Checked;
    }
}

2 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪个版本的Telerik,但我知道无论版本如何,RadGrid都会非常挑剔。

Telerik网站上用于选择项目的演示如下:

http://demos.telerik.com/aspnet-ajax/grid/examples/functionality/selecting/row-selection/defaultcs.aspx

这是他们用于演示的标记。

 <telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" AllowMultiRowSelection="true"
    runat="server" AllowSorting="True" GridLines="None" OnPreRender="RadGrid1_PreRender">
    <MasterTableView>
        <Columns>
            <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn">
            </telerik:GridClientSelectColumn>
        </Columns>
    </MasterTableView>
    <ClientSettings EnableRowHoverStyle="true">
        <Selecting AllowRowSelect="True"></Selecting>
        <ClientEvents OnRowMouseOver="RowMouseOver" />
    </ClientSettings>
</telerik:RadGrid>

基于以上所述,我会检查:

  1. 您使用的是MasterTableView吗?如果不是,即使您没有详细信息表,也可能需要尝试这种方法。如果RadGrid_1.MasterTableView.SelectedItems不起作用,您可以尝试遍历RadGrid_1.MasterTableView.Items并检查item.Selected为true的项目。

  2. 我将假设您帖子中的</column>只是一个错字,但它应该是</Columns>

  3. 希望有所帮助。 (顺便提一下,他们网站上的演示代码不正确,因为他们甚至没有在他们的“实时”示例代码LOL中定义网格中的所有列。)

答案 1 :(得分:0)

这是我的工作:

 For Each griditem1 As GridDataItem In RadGrid.MasterTableView.Items
            If griditem1.Selected Then
                Dim DocumentID As String = griditem1.OwnerTableView.DataKeyValues(griditem1.ItemIndex)("DocID").ToString
                
            End If