我的网格是5列,“事件”列后面是Q1到Q4。其中一个季度列可以在任何给定时间编辑,其他三个是标签。这是我用来确定要显示的代码(q在别处定义):
<telerik:GridTemplateColumn HeaderText="Q2" DataField="Q2" UniqueName="Q2">
<ItemTemplate>
<% If (q = 3) Then%>
<telerik:RadNumericTextBox ID="rntb_Q2" runat="server" Type="Number" ShowSpinButtons="true" Value='<%# CInt(Eval("Q2")) %>' Width="50px" CssClass="short" MinValue="0">
<IncrementSettings InterceptArrowKeys="false" InterceptMouseWheel="false" Step="1" />
<NumberFormat DecimalDigits="0" GroupSeparator="," />
</telerik:RadNumericTextBox>
<% Else%>
<asp:Label ID="lbl_Q2" runat="server" Text='<%# If(Eval("Q2") Is Nothing, "0", Eval("Q2")) %>'></asp:Label>
<% End If %>
</ItemTemplate>
</telerik:GridTemplateColumn>
这段代码一切正常;问题是当我想要改变一行以始终显示标签时。我尝试了If ((q = 3) AndAlso (Not GetDataItem("EventDesc").ToString.ToLower = "total error doses"))
以及If ((q = 3) AndAlso (Not Eval("EventDesc").ToString.ToLower = "total error doses"))
,但我收到的错误是无法在数据绑定之外使用Eval等。
感谢您的帮助。
答案 0 :(得分:0)
所以我试图做的是改变是否显示RadNumericTextBox或Label。这实现了结果而无需直接访问另一个单元的内容。它使用.ItemIndex属性来确定哪些控件应该可见。
<telerik:GridTemplateColumn HeaderText="Q2" DataField="Q2" UniqueName="Q2">
<ItemTemplate>
<% If (q = 3) Then %>
<telerik:RadNumericTextBox ID="rntb_Q2c" runat="server" Type="Number" ShowSpinButtons="true" Value='<%# Eval("Q2") %>' Width="75px" CssClass="short" Visible='<%#If(TryCast(Container, GridDataItem).ItemIndex < 9, True, False) %>'>
<IncrementSettings InterceptArrowKeys="false" InterceptMouseWheel="false" Step="1" />
<NumberFormat DecimalDigits="0" GroupSeparator="" />
</telerik:RadNumericTextBox>
<asp:Label ID="lbl_Q22" runat="server" Text='<%# Eval("Q2") %>' Visible='<%#If(TryCast(Container, GridDataItem).ItemIndex < 9, False, True) %>'></asp:Label>
<% Else %>
<asp:Label ID="lbl_Q2" runat="server" Text='<%# If(Eval("Q2") Is Nothing, "0", Eval("Q2")) %>'></asp:Label>
<% End If %>
</ItemTemplate>
</telerik:GridTemplateColumn>