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

[Solved] Hide controls in edit mode but show in insert mode

5 Answers 641 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Christian
Top achievements
Rank 1
Christian asked on 10 Feb 2010, 11:25 AM
Hello Telerik-Team,

I have to hide some controls in the edit mode but show them in the insert mode:
<telerik:GridTemplateColumn DataField="Kennwort" EditFormHeaderTextFormat="Kennwort*:" HeaderText="" HeaderStyle-Width="0"   
    Visible="false" UniqueName="Kennwort">  
    <EditItemTemplate> 
        <asp:TextBox runat="server" ID="tbKennwort" Width="300" MaxLength="30" Text='<%# Bind("Kennwort") %>'></asp:TextBox> 
        <span style="color: Red">  
        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" ControlToValidate="tbKennwort" ErrorMessage="*" runat="server">  
        </asp:RequiredFieldValidator> 
        </span> 
    </EditItemTemplate> 
 </telerik:GridTemplateColumn>   
 
<telerik:GridTemplateColumn DataField="Kennwort" EditFormHeaderTextFormat="Kennwort-Wiederholung*:" HeaderText="" HeaderStyle-Width="0"   
    Visible="false" UniqueName="Kennwort2">  
    <EditItemTemplate> 
        <asp:TextBox runat="server" ID="tbKennwort2" Width="300" MaxLength="30" ></asp:TextBox> 
        <span style="color: Red">  
        <asp:RequiredFieldValidator ID="RequiredFieldValidator5" ControlToValidate="tbKennwort2" ErrorMessage="*" runat="server">  
        </asp:RequiredFieldValidator> 
        </span> 
    </EditItemTemplate> 
 </telerik:GridTemplateColumn>      

How can I manage this?

I hav tried it with:
        protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)  
        {  
            if (e.Item.IsInEditMode == true)  
            {  
                GridEditableItem editItem = e.Item as GridEditableItem;  
 
 
                TextBox tbKennwort = editItem["Kennwort"].FindControl("tbKennwort"as TextBox;  
                tbKennwort.Visible = false;  
 
                TextBox tbKennwort2 = editItem["Kennwort2"].FindControl("tbKennwort2"as TextBox;  
                tbKennwort2.Visible = false;  
 
            }  
        } 

but then the 2 controls are hidden in the edit und in the insert mode.

Can anybody help?

Regards Christian





5 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 10 Feb 2010, 12:14 PM
Hello Christian,

Try the following code snippet in order to show/hide the columns based on edit/insert modes.

CS:
 
    protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) 
    { 
        if (e.CommandName == RadGrid.EditCommandName) 
        { 
           RadGrid1.MasterTableView.GetColumn("Kennwort").Visible = false
           RadGrid1.MasterTableView.GetColumn("Kennwort2").Visible = false
        } 
        else if(e.CommandName == RadGrid.InitInsertCommandName) 
        { 
            RadGrid1.MasterTableView.GetColumn("Kennwort").Visible = true
            RadGrid1.MasterTableView.GetColumn("Kennwort2").Visible = true
        }     
    } 

Thanks,
Princy.
0
Christian
Top achievements
Rank 1
answered on 10 Feb 2010, 01:58 PM
Hi Princy,

thanks for your code snippet.

It seems not to work.

If I debug the method RadGrid1_Command, then the visibility of the columns Kennwort and kennwort2 will be set zu false. But nevertheless the edit fields will be shown.

Here is the code:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="~/Personenverwaltung/Personen.ascx.cs" Inherits="WebSiteKunde.Personenverwaltung.Personen" %> 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
 
 
 
<asp:UpdatePanel ID="UpdatePanel5" runat="server">  
            <ContentTemplate> 
            <telerik:RadGrid   
                DataSourceID="odsPersonen"   
                ID="RadGrid1"   
                runat="server"   
                EnableViewState="true" 
                AllowAutomaticUpdates="True"   
                AllowAutomaticInserts="true"   
                AllowAutomaticDeletes="true" 
                AllowPaging="true"   
                PageSize="10"   
                AllowSorting="true" 
                SortingSettings-SortToolTip="Klicken Sie hier um die Spalte zu sortieren"   
                PagerStyle-FirstPageToolTip="zur ersten Seite" 
                PagerStyle-NextPageToolTip="nächste Seite"   
                PagerStyle-LastPageToolTip="zur letzten Seite" 
                PagerStyle-PrevPageToolTip="vorherige Seite"   
                PagerStyle-PagerTextFormat="Change page: {4}  Seite {0} von {1}, Datensatz {2} bis {3} von {5}" 
                OnItemCommand="RadGrid1_Command" 
                > 
                <MasterTableView   
                    DataKeyNames="PersonID"   
                    AllowNaturalSort="false"   
                    EditMode="EditForms"   
                    OverrideDataSourceControlSorting="true" 
                    CommandItemDisplay="Bottom"   
                    CommandItemSettings-AddNewRecordText="Neue Person hinzufügen" 
                    AutoGenerateColumns="false"   
                    CommandItemSettings-RefreshText="Aktualisieren" 
                    > 
                    <Columns> 
                        <telerik:GridEditCommandColumn ButtonType="ImageButton" EditText="Datensatz bearbeiten" HeaderStyle-Width="20" /> 
                        <telerik:GridButtonColumn ConfirmText="Möchten Sie diesen Datensatz löschen?" ConfirmDialogType="Classic" 
                            ConfirmTitle="Sicherheitsabfrage" ButtonType="ImageButton" CommandName="Delete" 
                            Text="Datensatz löschen" UniqueName="DeleteColumn" HeaderStyle-Width="20">  
                        </telerik:GridButtonColumn> 
                          
                        <telerik:GridTemplateColumn DataField="PersonID" EditFormHeaderTextFormat="" HeaderText="PersonID" HeaderStyle-Width="110px" 
                            SortExpression="PersonID">  
                            <ItemTemplate> 
                                <asp:Label runat="server" ID="lbPersonID" Text='<%# Eval("PersonID") %>'></asp:Label> 
                            </ItemTemplate> 
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbPersonID" Text='<%# Bind("PersonID") %>' Visible="false"></asp:TextBox>    
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn> 
 
                        <telerik:GridTemplateColumn DataField="AccountID" EditFormHeaderTextFormat="" HeaderText="AccountID" HeaderStyle-Width="110px" 
                            SortExpression="AccountID">  
                            <ItemTemplate> 
                                <asp:Label runat="server" ID="lbAccountID" Text='<%# Eval("AccountID") %>'></asp:Label> 
                            </ItemTemplate> 
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbAccountID" Text='<%# Bind("AccountID") %>' Visible="false"></asp:TextBox>                       
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn> 
                               
                        <telerik:GridTemplateColumn DataField="Vorname" EditFormHeaderTextFormat="Vorname*:" HeaderText="Vorname" HeaderStyle-Width="110px" 
                            SortExpression="Vorname">  
                            <ItemTemplate> 
                                <asp:Label runat="server" ID="lbVorname" Text='<%# Eval("Vorname") %>'></asp:Label> 
                            </ItemTemplate> 
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbVorname" Width="300" MaxLength="50" Text='<%# Bind("Vorname") %>'></asp:TextBox> 
                                <span style="color: Red">  
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="tbVorname" ErrorMessage="*" runat="server">  
                                </asp:RequiredFieldValidator> 
                                </span>                                  
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>     
                           
                        <telerik:GridTemplateColumn DataField="Nachname" EditFormHeaderTextFormat="Nachname*:" HeaderText="Nachname" HeaderStyle-Width="110px" 
                            SortExpression="Nachname">  
                            <ItemTemplate> 
                                <asp:Label runat="server" ID="lbNachname" Text='<%# Eval("Nachname") %>'></asp:Label> 
                            </ItemTemplate> 
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbNachname" Width="300" MaxLength="50" Text='<%# Bind("Nachname") %>'></asp:TextBox> 
                                <span style="color: Red">  
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="tbNachname" ErrorMessage="*" runat="server">  
                                </asp:RequiredFieldValidator> 
                                </span>                                  
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>    
                           
                        <telerik:GridTemplateColumn DataField="Anmeldename" EditFormHeaderTextFormat="Anmeldename*:" HeaderText="Anmeldename"   
                            HeaderStyle-Width="150" SortExpression="Anmeldename">  
                            <ItemTemplate> 
                                <asp:Label runat="server" ID="lbAnmeldename" Text='<%# Eval("Anmeldename") %>'></asp:Label> 
                            </ItemTemplate> 
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbAnmeldename" Width="300" MaxLength="30" Text='<%# Bind("Anmeldename") %>'></asp:TextBox>                              
                                <span style="color: Red">  
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" ControlToValidate="tbAnmeldename" ErrorMessage="*" runat="server">  
                                </asp:RequiredFieldValidator> 
                                </span>                                    
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>                            
 
                        <telerik:GridTemplateColumn DataField="Funktion" EditFormHeaderTextFormat="Funktion:" HeaderText="" HeaderStyle-Width="0" Visible="false">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbFunktion" Width="300" MaxLength="50" Text='<%# Bind("Funktion") %>'></asp:TextBox>                              
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>    
 
                        <telerik:GridTemplateColumn DataField="Telefon" EditFormHeaderTextFormat="Telefon:" HeaderText="" HeaderStyle-Width="0" Visible="false">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbTelefon" Width="300" MaxLength="20" Text='<%# Bind("Telefon") %>'></asp:TextBox>                              
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>    
 
                        <telerik:GridTemplateColumn DataField="Fax" EditFormHeaderTextFormat="Fax:" HeaderText="" HeaderStyle-Width="0" Visible="false">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbFax" Width="300" MaxLength="30" Text='<%# Bind("Fax") %>'></asp:TextBox>                              
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>    
                           
                       <telerik:GridTemplateColumn DataField="Email" EditFormHeaderTextFormat="Email:" HeaderText="" HeaderStyle-Width="0" Visible="false">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbEmail" Width="300" MaxLength="50" Text='<%# Bind("Email") %>'></asp:TextBox>                              
                                <span style='color: Red'>  
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="tbEmail" runat="server"   
                                    ErrorMessage="*" ValidationGroup="insert" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">  
                                    </asp:RegularExpressionValidator> 
                                </span> 
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn> 
 
                                          
                        <telerik:GridTemplateColumn DataField="Kennwort" EditFormHeaderTextFormat="Kennwort*:" HeaderText="" HeaderStyle-Width="0"   
                            Visible="false" UniqueName="Kennwort">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbKennwort" Width="300" MaxLength="30" Text='<%# Bind("Kennwort") %>'></asp:TextBox> 
                                <span style="color: Red">  
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" ControlToValidate="tbKennwort" ErrorMessage="*" runat="server">  
                                </asp:RequiredFieldValidator> 
                                </span> 
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>   
 
                        <telerik:GridTemplateColumn DataField="Kennwort" EditFormHeaderTextFormat="Kennwort-Wiederholung*:" HeaderText="" HeaderStyle-Width="0"   
                            Visible="false" UniqueName="Kennwort2">  
                            <EditItemTemplate> 
                                <asp:TextBox runat="server" ID="tbKennwort2" Width="300" MaxLength="30" ></asp:TextBox> 
                                <span style="color: Red">  
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" ControlToValidate="tbKennwort2" ErrorMessage="*" runat="server">  
                                </asp:RequiredFieldValidator> 
                                </span> 
                            </EditItemTemplate> 
                         </telerik:GridTemplateColumn>                            
                                                                                                                                                                          
                    </Columns> 
                      
                    <EditFormSettings> 
                        <EditColumn ButtonType="ImageButton" InsertText="Datensatz einfügen" UpdateText="Datensatz updaten" 
                            UniqueName="EditCommandColumn1" CancelText="Abbrechen">  
                        </EditColumn> 
                        <FormTableButtonRowStyle HorizontalAlign="left"></FormTableButtonRowStyle> 
                    </EditFormSettings> 
                                                  
                </MasterTableView> 
            </telerik:RadGrid> 
            </ContentTemplate> 
            </asp:UpdatePanel> 
 
 
<asp:ObjectDataSource ID="odsPersonen" runat="server" SelectMethod="GetPersonen" 
    UpdateMethod="UpdateAnsprechpartner" InsertMethod="InsertAnsprechpartner" DeleteMethod="DeleteAnsprechpartner" 
    TypeName="Trost.Adapter.AdpKunde" DataObjectTypeName="Trost.Adapter.DtoPersonen" 
    OldValuesParameterFormatString="original_{0}">  
    <SelectParameters> 
        <asp:SessionParameter Name="kundeID" SessionField="KundeID" Type="Int32" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 
 
 

namespace WebSiteKunde  
{  
    public partial class Personen : System.Web.UI.UserControl  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
        }  
 
 
        protected void RadGrid1_Command(object sender, GridCommandEventArgs e)  
        {  
 
            if (e.CommandName == RadGrid.EditCommandName)  
            {  
                RadGrid1.MasterTableView.GetColumn("Kennwort").Visible = false;  
                RadGrid1.MasterTableView.GetColumn("Kennwort2").Visible = false;  
            }  
            else if (e.CommandName == RadGrid.InitInsertCommandName)  
            {  
                RadGrid1.MasterTableView.GetColumn("Kennwort").Visible = true;  
                RadGrid1.MasterTableView.GetColumn("Kennwort2").Visible = true;  
            }  
 
 
        }  
 
    }  

Any idea?

regards

Christian
0
Accepted
Princy
Top achievements
Rank 2
answered on 11 Feb 2010, 06:12 AM
Hi,

Try the code snippet below to achieve the desired scenario:

C#
 protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) 
    { 
        RadGrid grid = (source as RadGrid); 
        if (e.CommandName == RadGrid.InitInsertCommandName) 
        { 
            grid.MasterTableView.ClearEditItems(); 
        } 
        if (e.CommandName == RadGrid.EditCommandName) 
        { 
            e.Item.OwnerTableView.IsItemInserted = false
         } 
    } 
 
 
 protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) 
    { 
        if (e.Item is GridEditFormItem && e.Item.IsInEditMode && e.Item.OwnerTableView.IsItemInserted==false
        { 
                GridEditFormItem editFormItem = (GridEditFormItem)e.Item; 
                RadGrid1.MasterTableView.IsItemInserted = false
                Button btn = (Button)editFormItem.FindControl("btnSubmit"); 
                btn.Visible = false
                
        } 
        else if (e.Item is GridEditFormInsertItem && e.Item.IsInEditMode && e.Item.OwnerTableView.IsItemInserted == true
         { 
                GridEditFormInsertItem editFormInsertItem = (GridEditFormInsertItem )e.Item; 
                RadGrid1.MasterTableView.ClearEditItems(); 
                Label lbl = (Label)editFormInsertItem.FindControl("Label1"); 
                lbl.Visible = false
        } 
   } 

Thanks,
Princy




0
Christian
Top achievements
Rank 1
answered on 12 Feb 2010, 08:09 AM
Hi,

your code snippet doesn't help.

I have to hide the fields Kennwort and Kennwort 2 in the edit mode but show them in the insert mode.

With this solution I can hide the textboxes but not the label fields:

      protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)     
        {     
            if (e.Item.IsInEditMode == true)     
            {     
                GridEditableItem editItem = e.Item as GridEditableItem;     
    
    
                TextBox tbKennwort = editItem["Kennwort"].FindControl("tbKennwort"as TextBox;     
                tbKennwort.Visible = false;     
    
                TextBox tbKennwort2 = editItem["Kennwort2"].FindControl("tbKennwort2"as TextBox;     
                tbKennwort2.Visible = false;     
    
            }     
        }    
 

Any suggestion?

Thanks

Christian
0
Christian
Top achievements
Rank 1
answered on 12 Feb 2010, 11:13 AM
This works fine for me:

       protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)  
        {  
            RadGrid grid = (source as RadGrid);  
            if (e.CommandName == RadGrid.InitInsertCommandName)  
            {  
                grid.MasterTableView.ClearEditItems();  
                RadGrid1.MasterTableView.GetColumn("Kennwort").EditFormHeaderTextFormat = "Kennwort*:";  
                RadGrid1.MasterTableView.GetColumn("Kennwort2").EditFormHeaderTextFormat = "Kennwort-Wiederholung*:";  
            }  
            if (e.CommandName == RadGrid.EditCommandName)  
            {  
                e.Item.OwnerTableView.IsItemInserted = false;  
                RadGrid1.MasterTableView.GetColumn("Kennwort").EditFormHeaderTextFormat = "";  
                RadGrid1.MasterTableView.GetColumn("Kennwort2").EditFormHeaderTextFormat = "";  
            }  
        }  
 
 
        protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)  
        {  
            // update form  
            if (e.Item is GridEditFormItem && e.Item.IsInEditMode && e.Item.OwnerTableView.IsItemInserted == false)  
            {  
                GridEditFormItem editFormItem = (GridEditFormItem)e.Item;  
                editFormItem["Kennwort"].Visible = false;  
                editFormItem["Kennwort2"].Visible = false;  
            }  
            // insert  
            else if (e.Item is GridEditFormInsertItem && e.Item.IsInEditMode && e.Item.OwnerTableView.IsItemInserted == true)  
            {  
                RadGrid1.MasterTableView.ClearEditItems();  
            }  
        } 
Tags
Grid
Asked by
Christian
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Christian
Top achievements
Rank 1
Share this question
or