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

[Solved] Conditionally hide EditCommandColumn1 or do not allow Update

2 Answers 141 Views
Grid
This is a migrated thread and some comments may be shown as answers.
gc_0620
Top achievements
Rank 1
gc_0620 asked on 25 Feb 2010, 09:50 PM

Hi
Environment: RadControls for ASP.NET AJAX Q3 2009 / VS 2008 SP1/IE7/WINXP SP 2. 

I would like to conditionally hide or disallow the Update  in GridEditFormItem for certain users. For Example If the User is 'PR Manager', all add/update/edit/delete options will be available,  for others Radgrid will be read only.

I can hide the command items template without any problem but the problem is  when the Grid is in GridEditFormItem.   Just can't refer  the  EditCommandColumn1  (null exception error occurs) or hide its update text. 
Ideal solution will be if user is not 'PR Manager', only the cancel option will be available in GridEditFormItem. Below is my Radgrid and  Radgrid_Item Command.

Any help will be appreciated...


Thanks

GC_0620

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)  
    {  
 
        if ((Session["SessionUserEmplCategory"].ToString().Trim() != "PR Manager"))  
          
        {  
 
            // This works...  
            if (e.Item is GridCommandItem)  
            {  
                GridCommandItem cmdItem = (GridCommandItem)e.Item;  
               
                LinkButton btnedit = (LinkButton)cmdItem.FindControl("btnEditSelected");  
                btnedit.Visible = false;  
                 
                LinkButton btnupdate = (LinkButton)cmdItem.FindControl("btnUpdateEdited");  
                btnupdate.Visible = false;  
                LinkButton btnadd = (LinkButton)cmdItem.FindControl("BtnInitInsert");  
                btnadd.Visible = false;  
                 
                LinkButton btninsert = (LinkButton)cmdItem.FindControl("btnPerformInsert");  
                btninsert.Visible = false;  
 
                LinkButton btndelete = (LinkButton)cmdItem.FindControl("BtnDelete");  
                btndelete.Visible = false;  
 
                LinkButton btnCancel = (LinkButton)cmdItem.FindControl("btnCancel");  
                btnCancel.Visible = false;  
 
                LinkButton btnRefresh = (LinkButton)cmdItem.FindControl("btnRefresh");  
                btnRefresh.Visible = false;  
 
            }  

            //// Can't Hide the EditCommandColumn or hide its Update text.   
                     
           if (e.Item is  GridEditFormItem  && e.Item.IsInEditMode)  
            {  
            
             /// Allow only Cancel option if not 'PR Manager'

 

 

 

             GridEditFormItem EditFormcmdItem = (GridEditFormItem)e.Item;  
             EditFormcmdItem.FindControl("EditCommandColumn1").Visible = false;  
          }    
        }  

 Rad Grid:

<telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" 
        AllowSorting="True" 
           '''  
           '''" OnItemDataBound="RadGrid1_ItemDataBound">  
        <MasterTableView DataKeyNames="ID" CommandItemDisplay="Top" Width="100%" Font-Size="11px"
 
            <CommandItemTemplate> 
                <div style="padding: 5px 5px;">  
                    Custom command item template&nbsp;&nbsp;&nbsp;&nbsp;  
                    <asp:LinkButton ID="btnEditSelected" runat="server" CommandName="EditSelected" Visible='<%# RadGrid1.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/Edit.gif" />Edit selected</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGrid1.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/Update.gif" />Update</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" Visible='<%# RadGrid1.EditIndexes.Count > 0 || RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/Cancel.gif" />Cancel editing</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="BtnInitInsert" runat="server" CommandName="InitInsert" Visible='<%# !RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/AddRecord.gif" />Add new</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="btnPerformInsert" runat="server" CommandName="PerformInsert" 
                        Visible='<%# RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/Insert.gif" /> Add this Attachment</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="BtnDelete" OnClientClick="javascript:return confirm('Delete all selected Attachments?')" 
                        runat="server" CommandName="DeleteSelected"><img style="border:0px;vertical-align:middle;" alt="" src="Images/Delete.gif" />Delete selected Attachments</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="BtnView" runat="server" CommandName="EditSelected" Visible='<%# RadGrid1.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/Preview-icon.png" /> View selected</asp:LinkButton>&nbsp;&nbsp;  
                    <asp:LinkButton ID="btnRefresh" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="Images/Refresh.gif" />Refresh Attachment list</asp:LinkButton> 
                </div> 
            </CommandItemTemplate> 
            <Columns> 
                '''' ''''  
            </Columns> 
          
            <EditFormSettings> 
          
                <EditColumn InsertText="Insert" UpdateText="Update" UniqueName="EditCommandColumn1"  // Allow only Cancel if user is not 'PR Manager'
                    CancelText="Cancel">  
                </EditColumn> 
                <FormTableButtonRowStyle HorizontalAlign="Right"></FormTableButtonRowStyle> 
            </EditFormSettings> 

        </MasterTableView> 
        <ClientSettings> 
            <Selecting AllowRowSelect="True" /> 
            <ClientEvents OnCommand="gridCommand" /> 
        </ClientSettings> 
    </telerik:RadGrid> 

2 Answers, 1 is accepted

Sort by
0
Daniel
Telerik team
answered on 25 Feb 2010, 09:59 PM
Hello,

Please try the following code-snippet:
...
if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
{
    /// Allow only Cancel option if not 'PR Manager'
    GridEditFormItem EditFormcmdItem = (GridEditFormItem)e.Item;
    EditFormcmdItem.FindControl("UpdateButton").Visible = false;
}
...

Let me know whether this approach is suitable for your scenario.

Best regards,
Daniel
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
0
gc_0620
Top achievements
Rank 1
answered on 26 Feb 2010, 12:11 PM
Thanks Daniel. It works.
Tags
Grid
Asked by
gc_0620
Top achievements
Rank 1
Answers by
Daniel
Telerik team
gc_0620
Top achievements
Rank 1
Share this question
or