Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RadGrid列在插入时可编辑,但在更新时设置为只读_C#_Asp.net_Radgrid - Fatal编程技术网

C# RadGrid列在插入时可编辑,但在更新时设置为只读

C# RadGrid列在插入时可编辑,但在更新时设置为只读,c#,asp.net,radgrid,C#,Asp.net,Radgrid,我有一个RadGrid,它有一个列,如: <telerik:GridTemplateColumn HeaderText="Car" > <ItemTemplate> <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> /> </ItemTemplate> <EditItemTemplate>

我有一个RadGrid,它有一个列,如:

<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 >

我想对它进行设置,这样该列在插入新值时允许输入,但在更新值时不允许输入


有人能提个建议吗

我自己在寻找解决方案时发现了你的问题。我能够拼凑出一些有用的东西;我不知道这是否是最好的方法,但我倾向于选择有效的方法

将您的
GridTemplateColumn
设置为
ReadOnly=“true”
,并确保为其提供
UniqueName
属性。然后为网格创建预渲染处理程序,以执行以下操作:

    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

我最终在页面加载中使用了

myTextBox.Enabled = Parent.NamingContainer is GridEditFormInsertItem;

这是在用于数据更新/插入的usercontrol中,我认为最简单的方法是添加InsertItemTemplate并将EditItemTemplate更改为标签

<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 >

我进行了编辑,包括一个“Else”子句,将ReadOnly属性设置为“True”。