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

Item's visibility in edit and insert form

2 Answers 311 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Christophe
Top achievements
Rank 1
Christophe asked on 21 Nov 2011, 04:33 PM
Hello,

I have created a grid wich shows datas following the value of a Combo Box (nomenclature name).
For many nomenclature i need only 2 colums in the grid but for one i need 5 columns.
So i created 5 columns in my grid and I change the "visible" attribute of the GridTemplateColumn when necessary to show or not the 3 last columns.
I have a problem when i click on the edit or Insert command. I have everytime 5 fields (even if the GridTemplateColumn is not visible)

How can i set the visible attribute of the field in the edit form ? I need to hide those three fields (isocountrycode, phoneID, nationality)


  • cs:
    protected void RadGridNomenclature_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
     
               [....]
                if (RadComboBoxNomenclaturesList.SelectedItem.Text.ToString().Equals("Code pays"))
                {
                    RadGridNomenclature.Columns.FindByUniqueName("isoCountryCode").Visible = true;
                    RadGridNomenclature.Columns.FindByUniqueName("phoneID").Visible = true;
                    RadGridNomenclature.Columns.FindByUniqueName("nationality").Visible = true;
     
                    RadGridNomenclature.Columns.FindByUniqueName("description").HeaderStyle.Width = Unit.Pixel(175);
                }
                else
                {
                    RadGridNomenclature.Columns.FindByUniqueName("isoCountryCode").Visible = false;
                    RadGridNomenclature.Columns.FindByUniqueName("phoneID").Visible = false;
                    RadGridNomenclature.Columns.FindByUniqueName("nationality").Visible = false;
     
                    RadGridNomenclature.Columns.FindByUniqueName("description").HeaderStyle.Width = Unit.Pixel(500);
                }
     
                [....]
            }

  • aspx:

<telerik:RadComboBox ID="RadComboBoxNomenclaturesList" Runat="server"
        AutoPostBack="True"
        onselectedindexchanged="RadComboBoxNomenclaturesList_SelectedIndexChanged"
        Skin="Windows7">
    </telerik:RadComboBox>
<telerik:RadGrid ID="RadGridNomenclature" OnUnload="RadGridNomenclature_Unload" OnNeedDataSource="RadGridNomenclature_NeedDataSource" OnInsertCommand="RadGridNomenclature_InsertCommand" OnDeleteCommand="RadGridNomenclature_DeleteCommand" OnUpdateCommand="RadGridNomenclature_UpdateCommand" runat="server" Skin="Windows7" PageSize="20" Width="777px">
    <MasterTableView AutoGenerateColumns="false" DataKeyNames="uid" InsertItemPageIndexAction="ShowItemOnCurrentPage" AllowPaging="True" CommandItemDisplay="Top">
        <Columns>
            <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
                <ItemStyle CssClass="MyImageButton" />
            </telerik:GridEditCommandColumn>
 
            <telerik:GridTemplateColumn HeaderText="UID" SortExpression="uid" UniqueName="uid" Visible="True" ShowFilterIcon="true">
                <HeaderStyle Width="175px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="uid" Text='<%# Eval("uid") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxUid" runat="server" Text='Calculated by the system' Width="175px" ReadOnly="True" Enabled="false" />
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxUid" runat="server" Text='<%# Bind("uid") %>' Width="175px" ReadOnly="True" />
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Description" SortExpression="description" UniqueName="description" Visible="True">
                <HeaderStyle Width="500px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="description" Text='<%# Eval("description") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxDescription" runat="server" Width="450px" />
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxDescription" runat="server" Text='<%# Bind("description") %>' Width="450px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="ISO country code" SortExpression="isoCountryCode" UniqueName="isoCountryCode" Visible="False">
                <HeaderStyle Width="75px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="isoCountryCode" Text='<%# Eval("isoCountryCode") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxIsoCountryCode" runat="server" Width="100px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxIsoCountryCode" runat="server" Text='<%# Bind("isoCountryCode") %>' Width="100px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Identifiant telephonique" SortExpression="phoneID" UniqueName="phoneID" Visible="False">
                <HeaderStyle Width="75px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="phoneID" Text='<%# Eval("phoneID") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxPhoneID" runat="server" Width="100px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxPhoneID" runat="server" Text='<%# Bind("phoneID") %>' Width="100px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Nationality" SortExpression="nationality" UniqueName="nationality" Visible="False">
                <HeaderStyle Width="175px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="nationality" Text='<%# Eval("nationality") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxNationality" runat="server" Width="450px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxNationality" runat="server" Text='<%# Bind("nationality") %>' Width="450px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Delete this product?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ConfirmDialogWidth="220px">
                <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
            </telerik:GridButtonColumn>
        </Columns>
        <EditFormSettings CaptionDataField="Description" CaptionFormatString="Edit description of {0}" InsertCaption="New Nomenclature">
            <EditColumn ButtonType="ImageButton" InsertText="Insert Order" UpdateText="Update" UniqueName="EditCommandColumn1" CancelText="Cancel edit">
            </EditColumn>
            <FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow"></FormTableButtonRowStyle>
        </EditFormSettings>
    </MasterTableView>
</telerik:RadGrid>


Hope you understand me and my problem ...

Regards,

2 Answers, 1 is accepted

Sort by
0
Casey
Top achievements
Rank 1
answered on 21 Nov 2011, 08:35 PM
Hi Christophe,

Have you tried setting the Display property, instead of the visible property for the columns? 

If that doesn't work, when you set the columns Visible = false, you could also set the column's ReadOnly property to true.

Thanks,
Casey
0
Accepted
Princy
Top achievements
Rank 2
answered on 22 Nov 2011, 07:12 AM
Hello Christophe,

Try the following code snippet.
C#:
protected void gri_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
  if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
  {
      GridEditFormItem itm = (GridEditFormItem)e.Item;
      TableCell cell = itm["isoCountryCode"];
      Label lbl = (Label)cell.FindControl("isoCountryCode");
      lbl.Visible = false;
      TableCell cell1 = itm["phoneID"];
      Label lbl1 = (Label)cell.FindControl("phoneID");
      lbl1.Visible = false;
      TableCell cell2 = itm["nationality"];
      Label lbl2 = (Label)cell.FindControl("nationality");
      lbl2.Visible = false;
  }
}

-Princy.
Tags
Grid
Asked by
Christophe
Top achievements
Rank 1
Answers by
Casey
Top achievements
Rank 1
Princy
Top achievements
Rank 2
Share this question
or