当只有一行时,Telerik RadGrid不允许取消选择行

时间:2011-10-20 21:32:32

标签: asp.net telerik-grid

我有两件事需要在Radgrid的click事件上发生。我正在使用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个不同的网格,我需要这样做。

谢谢,

朗达

1 个答案:

答案 0 :(得分:2)

添加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