我有一个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 >
并且我想要设置它以便此列在插入新值时允许输入但在更新值时不允许输入。
有人可以提出建议吗?
答案 0 :(得分:3)
我认为最简单的方法是添加一个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 >
这样,您不必在后面的代码中乱用它。
答案 1 :(得分:0)
我在寻找解决方案时发现了自己的问题。我能够把一些有用的东西拼凑起来;不知道这是不是最好的方式,但我倾向于选择有效的方法。 ; - )
将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
答案 2 :(得分:0)
我最终选择了Page_Load
myTextBox.Enabled = Parent.NamingContainer is GridEditFormInsertItem;
这是用于更新/插入数据的用户控件