【问题标题】:Telerik RadGrid not allowing to deselect row when there is only one rowTelerik RadGrid 不允许在只有一行时取消选择行
【发布时间】:2011-10-20 21:32:31
【问题描述】:

我有两件事需要在 Radgrid 的点击事件上发生。我正在使用 GridClientSelectColumn,因此如果用户单击复选框,它应该选择该行。同样,如果用户单击取消选中复选框,它应该取消选择该行。

我还需要获取所选行的计数,并且计数 > 0,我需要禁用其他一些控件。

到目前为止,这是我的 javascript。

function ChecklistsGrid_RowSelected(rowIndex) {
if (rowIndex == selectedRowIndex) {
    window["<%= ChecklistsGrid.ClientID %>"].MasterTableView.DeselectRow(window["<%= ChecklistsGrid.ClientID %>"].MasterTableView.Rows[rowIndex].Control);
    return false;
}
selectedRowIndex = rowIndex;

}

这是我的网格。

<telerik:RadGrid ID="ChecklistsGrid" runat="server" Skin="WF" ShowHeader="false" EnableEmbeddedSkins="false" OnItemDataBound="ChecklistsGrid_ItemDataBound" >
                                                <ClientSettings EnableRowHoverStyle="true" EnableAlternatingItems="true">
                                                    <Selecting AllowRowSelect="True" />
                                                    <ClientEvents OnRowSelected="ChecklistsGrid_RowSelected" />
                                                </ClientSettings>
                                                <MasterTableView Width="100%" CommandItemDisplay="Bottom" AutoGenerateColumns="false" TableLayout="Fixed"  >
                                                    <RowIndicatorColumn Visible="False">
                                                        <HeaderStyle Width="20px" />
                                                    </RowIndicatorColumn>
                                                    <ExpandCollapseColumn Resizable="False" Visible="False">
                                                        <HeaderStyle Width="20px" />
                                                    </ExpandCollapseColumn>
                                                    <Columns>
                                                        <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" HeaderStyle-Width="30" />
                                                        <telerik:GridBoundColumn HeaderText="Project - Package" UniqueName="ProjectPackages"></telerik:GridBoundColumn>
                                                        <telerik:GridBoundColumn DataField="Id" HeaderText="Checklist Id" HeaderStyle-Width="75" UniqueName="ChecklistId"></telerik:GridBoundColumn>
                                                    </Columns>
                                                </MasterTableView>

                                                <HeaderStyle BackColor="#666666" Font-Names="verdana, arial" Font-Size="Small" Height="20px" />
                                            </telerik:RadGrid>

我应该提到的另一件事是在使用母版页的页面中。

请帮忙。我被困住了。我需要在应用程序中使用 3 个不同的网格。

谢谢,

朗达

【问题讨论】:

  • 我还应该包括一件事。我收到一个 js 错误“Microsoft JScript 运行时错误:'window.MainContent_ChecklistsGrid.MasterTableView' 为空或不是对象”我怀疑它与母版页有关。

标签: asp.net telerik-grid


【解决方案1】:

添加GridClientSelectColumn

<telerik:GridClientSelectColumn UniqueName="SelectColumn">
    <HeaderStyle Width="27px" HorizontalAlign="Center" />
    <ItemStyle HorizontalAlign="Center" />
</telerik:GridClientSelectColumn>  

您收到的错误与母版页无关。这是因为您没有在 JavaScript 中正确引用 RadGrid。

不要使用OnRowSelected,而是尝试使用OnRowClick 并执行以下操作:

onRowClick = function(sender, args){
    var grid = $find("<%=grdVendors.UniqueID%>");
    if (grid){
        var item = grid.get_masterTableView().get_dataItems()[args.get_itemIndexHierarchical()];
        if (item.get_selected()){
            item.set_selected(false);
        }        
    }
}

我建议查看文档并熟悉客户端 API。 Telerik 拥有最好的支持团队之一,他们的论坛和知识库非常好。

这是客户端 API 参考的链接:
http://www.telerik.com/help/aspnet-ajax/grid-getting-familiar-with-client-side-api.html

这里有一些关于在客户端解剖行的文档:
http://www.telerik.com/help/aspnet-ajax/grid-gridtableview-deselectitem.html

【讨论】:

  • 我使用的代码实际上来自他们的示例。
  • 在他们扩展客户端 API 之前,这可能是一个旧示例或其他东西。
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2020-10-23
相关资源
最近更新 更多