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

发布于 2024-12-11 03:15:57 字数 2928 浏览 3 评论 0原文

我有两件事需要在 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 个不同的网格来执行此操作。

谢谢,

朗达

I have two things that need to happen on the click event of a Radgrid. I am using the GridClientSelectColumn so if the user clicks the checkbox it should select the row. By the same token if the user clicks to uncheck the checkbox, it should deselect the row.

I also need to get a count of the selected rows and it the count > 0, I need to disable some other controls.

Here is my javascript so far.

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

}

And here is my grid.

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

The other thing I should maybe mention is this in a page that uses masterpages.

Please help. I am stuck. I have 3 different grids in the application that I need to do this with.

Thanks,

Rhonda

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安穩 2024-12-18 03:15:57

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

Add a GridClientSelectColumn:

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

The error you're receiving has nothing to do with master pages. It's because you're not referencing the RadGrid correctly in your JavaScript.

Instead of using OnRowSelected, try using OnRowClick and do something like this:

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);
        }        
    }
}

I would suggest looking at the documentation and getting fimiliar with the client-side API. Telerik has one of the best support teams around, and their forum and knowledge base is excellent.

Here's a link to the client-side API reference:
http://www.telerik.com/help/aspnet-ajax/grid-getting-familiar-with-client-side-api.html

Here's some documentation on desecting rows client-side:
http://www.telerik.com/help/aspnet-ajax/grid-gridtableview-deselectitem.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文