1

私のグリッドは 5 列で、「イベント」列の後に Q1 から Q4 が続きます。四半期の列の 1 つはいつでも編集可能で、他の 3 つはラベルです。表示するものを決定するために使用するコードは次のとおりです (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>

このコードはすべて正常に動作します。問題は、 1 つの行を変更して常にラベルを表示したい場合です。私も試し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 などを使用できないというエラーが表示されます。

ご協力ありがとうございました。

4

1 に答える 1

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>
于 2012-08-08T13:31:42.230 に答える