簡體   English   中英

在GridView中使用Eval If / Else / EndIf會導致錯誤的數據綁定方法,例如Eval(),XPath()和Bind()

[英]Using Eval If/Else/EndIf in GridView causes error Databinding methods such as Eval(), XPath(), and Bind()

我試圖基於返回的數據庫值在語法上更改GridView中的值。

數據庫值“ is_zero_minutes_task”為布爾值。 如果為True,則希望顯示“ 0”;如果為False,則希望顯示在“ MinutesTaken”中返回的值。

我的代碼:

    <asp:SqlDataSource ID="SqlDataSourceRecentJobs" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString_LIVE_customer_support %>" 
        ProviderName="<%$ ConnectionStrings:ConnectionString_LIVE_customer_support.ProviderName %>" 
        SelectCommand="SELECT customer_name, start_time, end_time, is_zero_minutes_task, TIMESTAMPDIFF(MINUTE,start_time,end_time) AS MinutesTaken FROM time_recorder_jobs WHERE (time_recorder_jobs.deleted = @deleted) AND (time_recorder_users.company_id = @companyid) ORDER BY end_time">
        <SelectParameters>
            <asp:Parameter Name="@deleted" DefaultValue="0" Type="Object" />
            <asp:SessionParameter Name="companyid" SessionField="CompanyID" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

    <asp:GridView ID="GridViewRecentJobs" runat="server" 
        AutoGenerateColumns="False" CellPadding="4" 
        DataSourceID="SqlDataSourceRecentJobs" ForeColor="#333333" 
        GridLines="None" CellSpacing="4" ShowHeaderWhenEmpty="True"
        AllowSorting="True" AllowPaging="True">
        <Columns>
            <asp:BoundField DataField="customer_name" HeaderText="customer_name" 
                SortExpression="customer_name">
                <ItemStyle Wrap="False" />
            </asp:BoundField>
            <asp:BoundField DataField="start_time" HeaderText="start_time" 
                SortExpression="start_time">
                <ItemStyle Wrap="False" />
            </asp:BoundField>
            <asp:BoundField DataField="end_time" HeaderText="end_time" 
                SortExpression="end_time">
                <ItemStyle Wrap="False" />
            </asp:BoundField>
            <asp:TemplateField HeaderText="MinutesTaken" SortExpression="MinutesTaken">
                <ItemTemplate>
<%If Eval("is_zero_minutes_task").ToString = True Then%>
                    <asp:Label ID="MinutesTaken" runat="server" Text="0"></asp:Label>
<%Else%>
                    <asp:Label ID="MinutesTaken" runat="server" Text='<%# Bind("MinutesTaken") %>'></asp:Label>
<%End If%>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

我也嘗試使用:

<%If DataBinder.Eval(GridViewRecentJobs.DataItem, "is_zero_minutes_task") = True Then%>

但這會出現錯誤“'DataItem'不是System.Web.UI.WebControls.GridView'的成員”

我解決了!

<asp:TemplateField HeaderText="MinutesTaken" SortExpression="MinutesTaken">
<ItemTemplate>
    <asp:Label ID="MinutesTaken" runat="server" Text='<%# If((Eval("is_zero_minutes_task") = 1), "0", Eval("MinutesTaken"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM