Telerik RadGrid:无法选择项目索引

时间:2015-02-17 09:48:29

标签: asp.net telerik radgrid

在我打开这个问题之前,我搜索过并找不到像我这样的问题。 问题是,我正在构建一个Web应用程序并使用telerik radgrid来查看记录。直到这里没有查看的问题,但是当我点击一行或选择一行时,我想要行索引或所选项目索引否,而不是在gridview的selectedIndexChanged事件中发生错误,如“索引超出范围”。在这里你可以看到下面的aspx部分以及c#代码部分。

    <telerik:RadGrid ID="groupList" runat="server" AllowFilteringByColumn="True" AllowPaging="True" CellSpacing="0" GridLines="None" Skin="Metro" 
        OnSelectedIndexChanged="groupList_SelectedIndexChanged" MasterTableView-ClientDataKeyNames="Id" MasterTableView-DataKeyNames="Id">
        <ClientSettings EnablePostBackOnRowClick="True">
            <Selecting AllowRowSelect="True"  />
            <Scrolling AllowScroll="True" UseStaticHeaders="True" />
        </ClientSettings>
        <MasterTableView DataKeyNames="Id">
        <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>

        <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
        <HeaderStyle Width="20px"></HeaderStyle>
        </RowIndicatorColumn>

        <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
        <HeaderStyle Width="20px"></HeaderStyle>
        </ExpandCollapseColumn>

            <Columns>
                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="SelectRow" FilterControlAltText="Filter uniqueName column"
                      UniqueName="uniqueName">
                </telerik:GridButtonColumn>
            </Columns>

        <EditFormSettings>
        <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
        </EditFormSettings>
        </MasterTableView>

        <FilterMenu EnableImageSprites="False"></FilterMenu>
    </telerik:RadGrid>

这是c#部分

protected void groupList_SelectedIndexChanged(object sender, EventArgs e)
{
    var dataItem = groupList.SelectedItems[0] as GridDataItem;
    if (dataItem != null)
    {
        var name = dataItem["Id"].Text;
    } 
}

在这里我有错误。请帮助我,并提前感谢。

1 个答案:

答案 0 :(得分:1)

您需要确定是否要使用内置的telerik&#34; RowSelect&#34;功能,或让他们按下命令列按钮。两者兼顾是没有意义的。

RowSelect将允许他们选择行中的任何位置来触发&#34; groupList_SelectedIndexChanged&#34;事件。如果这就是你想要的,我会删除:

<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="SelectRow" FilterControlAltText="Filter uniqueName column" UniqueName="uniqueName">
</telerik:GridButtonColumn>

并保留标记中的其他代码。如果它仍然无法正常工作,您可以尝试更改访问所选数据的方式,例如:

protected void groupList_SelectedIndexChanged(object sender, EventArgs e)
{
    var dataItem = groupList.SelectedItems[0].OwnerTableView.DataKeyValues[groupList.SelectedItems[0].ItemIndex]["id"];
}

无论哪种方式,我都会在活动中设置一个断点,并且&#34;观看&#34;您尝试访问的数据,请确保&#34; SelectedItems&#34;不是空的。在调试时观察价值观将为幸福与和平打开大门。

作为一个FYI,我不相信你需要&#34; ClientDataKeyNames&#34;除非您使用getDataKeyValue(colName)方法从客户端获取值。但那不应该在这里引起你的问题......