Telerik RadGrid:无法选择项目索引
Telerik RadGrid : Cant have Selected Item Index
在我打开这个问题之前,我搜索了一下并没有找到像我这样的问题。
问题是,我正在构建一个 Web 应用程序并使用 telerik radgrid 查看记录。到这里查看没有问题,但是当我单击一行或 select 一行时,我想要行索引或 selected 项目索引不是 selectedIndexChanged 事件中的索引gridview 出现错误,如 "index was out of range"。在这里你可以看到下面的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;
}
}
这里我有错误。请帮助我解决这个问题并提前致谢。
您需要确定是要使用内置的 telerik "RowSelect" 功能,还是让他们按下命令栏按钮。两者都做没有意义。
RowSelect 将允许它们 select 行中的任何位置来触发 "groupList_SelectedIndexChanged" 事件。如果这就是你想要的,我会删除:
<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="SelectRow" FilterControlAltText="Filter uniqueName column" UniqueName="uniqueName">
</telerik:GridButtonColumn>
并保留标记中的其他代码。如果仍然不起作用,您可以尝试更改访问 selected 数据的方式,例如:
protected void groupList_SelectedIndexChanged(object sender, EventArgs e)
{
var dataItem = groupList.SelectedItems[0].OwnerTableView.DataKeyValues[groupList.SelectedItems[0].ItemIndex]["id"];
}
无论哪种方式,我都会在事件上设置断点,并且 "watch" 您尝试访问的数据,确保 "SelectedItems" 不为空。在调试时观察值将打开通往幸福与和平的大门。
仅供参考,我认为您不需要 "ClientDataKeyNames" 除非您使用 getDataKeyValue(colName) 方法从客户端获取值。但这不应该给你带来问题...
在我打开这个问题之前,我搜索了一下并没有找到像我这样的问题。 问题是,我正在构建一个 Web 应用程序并使用 telerik radgrid 查看记录。到这里查看没有问题,但是当我单击一行或 select 一行时,我想要行索引或 selected 项目索引不是 selectedIndexChanged 事件中的索引gridview 出现错误,如 "index was out of range"。在这里你可以看到下面的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;
}
}
这里我有错误。请帮助我解决这个问题并提前致谢。
您需要确定是要使用内置的 telerik "RowSelect" 功能,还是让他们按下命令栏按钮。两者都做没有意义。
RowSelect 将允许它们 select 行中的任何位置来触发 "groupList_SelectedIndexChanged" 事件。如果这就是你想要的,我会删除:
<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="SelectRow" FilterControlAltText="Filter uniqueName column" UniqueName="uniqueName">
</telerik:GridButtonColumn>
并保留标记中的其他代码。如果仍然不起作用,您可以尝试更改访问 selected 数据的方式,例如:
protected void groupList_SelectedIndexChanged(object sender, EventArgs e)
{
var dataItem = groupList.SelectedItems[0].OwnerTableView.DataKeyValues[groupList.SelectedItems[0].ItemIndex]["id"];
}
无论哪种方式,我都会在事件上设置断点,并且 "watch" 您尝试访问的数据,确保 "SelectedItems" 不为空。在调试时观察值将打开通往幸福与和平的大门。
仅供参考,我认为您不需要 "ClientDataKeyNames" 除非您使用 getDataKeyValue(colName) 方法从客户端获取值。但这不应该给你带来问题...