c#
  • asp.net
  • radgrid
  • 2010-11-06 6 views 4 likes 
    4

    J'ai un RadGrid qui a une colonne comme:RadGrid colonne modifiable sur insert, mais mis à jour en lecture seule sur

    <telerik:GridTemplateColumn HeaderText="Car" > 
        <ItemTemplate> 
         <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> /> 
        </ItemTemplate> 
        <EditItemTemplate> 
         <asp:TextBox ID="MakeTextBox" runat="Server" Text='<%# Bind("Make") %> /> 
        </EditItemTemplate> 
    </telerik:GridTemplateColumn > 
    

    et je suis désireux de le configurer de sorte que cette colonne permettra l'entrée lors de l'insertion de nouveaux valeurs mais ne le sera pas lors de la mise à jour des valeurs.

    Quelqu'un peut-il faire une suggestion?

    Répondre

    0

    J'ai trouvé votre question lorsque vous cherchez moi-même une solution. J'ai été capable de paver quelque chose ensemble qui fonctionne; Je ne sais pas si c'est la meilleure façon, mais j'ai tendance à aller avec ce qui fonctionne. ;-)

    Définissez votre GridTemplateColumn comme ReadOnly="true" et assurez-vous de lui attribuer une propriété UniqueName. Ensuite, créez un gestionnaire PreRender pour le réseau qui fait cela:

    Private Sub RadGrid1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadGrid1.PreRender 
         For Each column As GridColumn In RadGrid.Columns 
          If column.UniqueName = "MyName" Then 
           If column.Owner.IsItemInserted Then 
            CType(column, GridTemplateColumn).ReadOnly = False 
           Else 
            CType(column, GridTemplateColumn).ReadOnly = True 
           End If 
           Exit For 
          End If 
         Next 
    
         RadGrid1.Rebind() 
        End Sub 
    
    +0

    J'ai effectué une modification pour inclure une clause "Else" pour définir la propriété ReadOnly sur "True". – RobLinx

    0

    J'ai fini par aller avec dans le Page_Load

    myTextBox.Enabled = Parent.NamingContainer is GridEditFormInsertItem; 
    

    Ceci est dans le usercontrol utilisé pour les mises à jour/insertions de données

    2

    Je pense que la façon la plus simple pour vous d'accomplir ceci serait d'ajouter un InsertItemTemplate et de changer le EditItemTemplate en Label.

    <telerik:GridTemplateColumn HeaderText="Car" > 
        <ItemTemplate> 
         <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> /> 
        </ItemTemplate> 
        <InsertItemTemplate> 
         <asp:TextBox ID="MakeTextBox" runat="Server" Text='<%# Bind("Make") %> /> 
        </InsertItemTemplate> 
        <EditItemTemplate> 
         <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> /> 
        </EditItemTemplate> 
    </telerik:GridTemplateColumn > 
    

    De cette façon, vous n'avez pas à vous tromper avec votre code derrière.

    Questions connexes