2

簡単に解決できると確信している問題がありますが、どうすればよいかわかりません。これが私のコードです:

<asp:TemplateField>
    <HeaderTemplate>
        <asp:Literal ID="text_shipped" Text="Media Shipped" runat="server" />
        <br />
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Label ID="lbl_shipped" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "shipped") %>' />--></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
    <HeaderTemplate></HeaderTemplate>
    <ItemTemplate>
        <asp:Button ID="lnk_ship" runat="server" CssClass="btn-mini" Text="Ship Software" Visible='<%# DataBinder.Eval(Container.DataItem, "shipped" ) == "Yes" ? true : false %>' />--></ItemTemplate>
</asp:TemplateField>

ラベル「lbl_shipped」には「はい」または「いいえ」の正しい値が表示されていますが、値が「はい」(ボタンを表示) または「いいえ」(ボタンを表示しない)。

私の問題は、Visible キーワードで条件付きコードを使用していて、値をテストしていることですが、「出荷済み」の値を無視しているようです。

これが主な2行です。最初の行は値を示し、2行目は条件付きで、条件付きは機能していません。それは偽を示し続けます:

<asp:Label ID="lbl_shipped" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "shipped") %>' />
<asp:Button ID="lnk_ship" runat="server" CssClass="btn-mini" Text="Ship Software" Visible='<%# DataBinder.Eval(Container.DataItem, "shipped" ) == "Yes" ? true : false %>' />
4

2 に答える 2

3
DataBinder.Eval(Container.DataItem, "shipped" ).ToString()

.ToString() を追加します。

<asp:Button ID="lnk_ship" runat="server" CssClass="btn-mini" Text="Ship Software" Visible='<%# DataBinder.Eval(Container.DataItem, "shipped" ).ToString() == "Yes" ? true : false %>' />
于 2013-09-17T20:50:11.853 に答える
2

私は何かをすぐにモックアップしましたが、それは私のために働いています(.NET 4、VS2012をターゲットとするASP.NET Webフォーム)、多分見てください:

デフォルト.aspx

GridView新しい Web フォーム プロジェクトでランダムに貼り付けた次の定義が含まれています。

<asp:GridView runat="server" ID="gridMe" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="ID">
            <ItemTemplate>
                <asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:Button runat="server" ID="btnName" Text="Hi" Visible='<%# DataBinder.Eval(Container.DataItem, "Name").ToString() == "Bob" %>'/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Default.aspx.cs

次のクラス定義があります

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var list = new List<Thing>
            {
                new Thing() {ID = 1, Name = "Bob"},
                new Thing() {ID = 2, Name = "Geraldine"}
            };
        gridMe.DataSource = list;
        gridMe.DataBind();
    }
}

public class Thing
{
    public int ID { get; set; }
    public string Name { get; set; }
}

結果

私の出力は次のようなものです:

ID  Name
1   [Hi]
2
于 2013-09-17T21:51:51.200 に答える