繁体   English   中英

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

[英]RadGrid Column editable on insert but set to readonly on update

我有一个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 >

我想要设置它,以便此列在插入新值时允许输入,但在更新值时不允许输入。

有人可以提出建议吗?

我认为最简单的方法是添加一个InsertItemTemplate并将EditItemTemplate更改为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 >

这样,您就不必在后面的代码中乱用它了。

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

GridTemplateColumn设置为ReadOnly="true" ,并确保为其指定UniqueName属性。 然后为执行此操作的网格创建一个PreRender处理程序:

    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

我最终选择了Page_Load

myTextBox.Enabled = Parent.NamingContainer is GridEditFormInsertItem;

这是用于更新/插入数据的用户控件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM