This is a migrated thread and some comments may be shown as answers.

Checkboxes in grid

1 Answer 94 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Chuck
Top achievements
Rank 1
Chuck asked on 29 Mar 2012, 01:58 PM

Hello I have a grid as below   with the 2 columns that are second to last having checkboxes that are supposed to be clickable when the person who's record is displayed is accessing the page...

however when that person does not have the canDelete permission (from on PreRender below) clicking these check boxes throws a client side error..

'Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Can't select a disabled or unselectable menu item.' when calling method: [nsIDOMEventListener::handleEvent]

edit: just as a note even without that prerender code i still get the same error..

also one more thing the rad grid is in an UpdatePanel

i guess its important to note that when all the checkboxes are editable it works fine... when only some are enabled it breaks

Any ideas?


<telerik:RadGrid ID="rgList" runat="server" AutoGenerateColumns="false" AllowPaging="True"
    PageSize="10" AllowSorting="True" ShowFooter="True" CellSpacing="0" OnNeedDataSource="rgList_NeedDataSource"
    OnItemDataBound="rgList_ItemDataBound"  OnPreRender="rgList_onPreRender" Width="985">
    <ClientSettings>
        <Resizing AllowColumnResize="True" AllowResizeToFit="True" ClipCellContentOnResize="false" />
    </ClientSettings>
    <MasterTableView EditMode="PopUp" DataKeyNames="id" CommandItemDisplay="None"
        CssClass="radGrid" AllowNaturalSort="true">
        <HeaderStyle Font-Bold="True" />
        <EditFormSettings FormStyle-Width="300" EditFormType="Template" CaptionFormatString="Edit : {0}"
            CaptionDataField="FullName" PopUpSettings-Width="500">
            <EditColumn FilterControlAltText="EditCommandColumn column" />
            <FormTemplate>
                <!-- A Form that works fine-->
                 
            </FormTemplate>
        </EditFormSettings>
        <SortExpressions>
            <telerik:GridSortExpression FieldName="FullName" SortOrder="Descending" />
        </SortExpressions>
        <Columns>
            <telerik:GridBoundColumn HeaderText="ID" DataField="ID" Visible="false" />
            <telerik:GridEditCommandColumn UniqueName="EditCommandColumn" EditText="+/-" ItemStyle-Width="25" ButtonType="LinkButton"  />
            <telerik:GridBoundColumn HeaderText="Person" DataField="FullName" />
            <telerik:GridTemplateColumn HeaderText="Position/AOR" UniqueName="PositionAOR">
                <ItemTemplate>
                    <span class="bold">Pos: </span><asp:Literal runat="server" ID="litPosition" Text='<%# Eval("some-string") %>' /><br />
                    <span class="bold">AOR: </span><asp:Literal runat="server" ID="litAorCertifications" Text='<%# Eval("another-string") %>' />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridBoundColumn HeaderText="s1" DataField="some status" ItemStyle-HorizontalAlign="center"
                ItemStyle-Width="50" />
            <telerik:GridBoundColumn HeaderText="s2" DataField="another-status" ItemStyle-HorizontalAlign="center"
                ItemStyle-Width="50" />
            <telerik:GridBoundColumn HeaderText="s3" DataField="yay-status" ItemStyle-HorizontalAlign="center"
                ItemStyle-Width="50" />
            <telerik:GridTemplateColumn HeaderText="checkbox1Column">
                <ItemTemplate>
                    <asp:CheckBox ID="chkbx1" Checked='<%# Eval("checkedYet") != null %>'
                        runat="server" Enabled='<%# Eval("person").ToString() == _currentPerson.ID.ToString() && Eval("checkedYet") == null %>'
                        OnCheckedChanged="chkAcknowledged_CheckChanged" AutoPostBack="true" />
                    <asp:Literal ID="litcheckyDate" runat="server" Text='<%# Eval("Acknowledged") != null ? ((DateTime)Eval("Acknowledged")).ToString("MM-dd-yy HH:mm") : "" %>'></asp:Literal>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="checkbox2column">
                <ItemTemplate>
                    <asp:CheckBox ID="chkbx2" Checked='<%# Eval("isAlreadyChecked") != null %>' runat="server"
                        Enabled='<%# Eval("person").ToString() == _currentPerson.ID.ToString() && Eval("isAlreadyChecked") == null %>'
                        OnCheckedChanged="chkbox1_CheckChanged" AutoPostBack="true" />
                    <asp:Literal ID="litcheckedDT" runat="server" Text='<%# Eval("isAlreadyChecked") != null ? ((DateTime)Eval("isAlreadyChecked")).ToString("MM-dd-yy HH:mm") : "" %>'></asp:Literal>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="Actions" UniqueName="deleteColumn" >
                <ItemTemplate>
                    <asp:LinkButton runat="server" ID="lbDelete" Text="Remove " OnClick="del" OnClientClick="javascript:return confirm('Are you sure?');"></asp:LinkButton>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
    <PagerStyle AlwaysVisible="False" />
    <SortingSettings EnableSkinSortStyles="False"></SortingSettings>
</telerik:RadGrid>


protected void rgMPSList_onPreRender(object sender, EventArgs e)
{
    bool canDelete;
    if (_canDelete != null)
    {
        canDelete = (bool)_canDelete;
    }
    else
    {
        canDelete = Helpers.IsUserInRoles("1,2,3");
    }
    foreach (GridColumn col in rgList.MasterTableView.RenderColumns)
    {
        if (col.ColumnType == "GridTemplateColumn" && col.UniqueName == "deleteColumn"  && !canDelete)
        {
            col.Display = false;
        }
        else if (col.ColumnType == "GridEditCommandColumn" && col.UniqueName == "EditCommandColumn" && !canDelete)
        {
            col.Display = false;
        }
    }
}

1 Answer, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 31 Mar 2012, 09:40 AM
Hello Chuck,

Please write below code in page_load or  Radgrid_needDataSource event.

RadGrid1.MasterTableView.GetColumn("ColumnUniueName").Display = false;
RadGrid1.MasterTableView.Columns.FindByUniqueName("ColumnUniueName").Visible = false;


Thanks,
Jayesh Goyani
Tags
Grid
Asked by
Chuck
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Share this question
or