在我打开这个问题之前,我搜索过并找不到像我这样的问题。 问题是,我正在构建一个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;
}
}
在这里我有错误。请帮助我,并提前感谢。
答案 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)方法从客户端获取值。但那不应该在这里引起你的问题......