Telerik RadGrid не позволяет отменить выбор строки, когда есть только одна строка - PullRequest
2 голосов
/ 21 октября 2011

У меня есть две вещи, которые должны произойти при событии щелчка 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 разных сетки в приложении, с которыми мне нужно это сделать.

Спасибо,

Ронда

1 Ответ

2 голосов
/ 21 октября 2011

Добавить GridClientSelectColumn:

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

Полученная ошибка не имеет ничего общего с мастер-страницами.Это потому, что вы неправильно ссылаетесь на RadGrid в вашем JavaScript.

Вместо использования 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

...