Gridview模板行中的条件Eval

时间:2013-09-17 20:18:56

标签: c# asp.net gridview

我有一个问题,我确信很容易解决,我只是不知道该怎么做。 这是我的代码:

<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”显示正确的值,即“是”或“否” 但是,我想根据是否添加一个“lnk_ship”按钮  或者不是值“是”(显示按钮),或“否”(不显示按钮)。

我的问题是我在Visible关键字上使用条件代码而我正在测试该值,但它似乎忽略了我的“已发货”值

这里是主要的两行,第一行显示值,第二行是条件,条件不起作用。它一直显示错误:

<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 %>' />

2 个答案:

答案 0 :(得分: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 %>' />

答案 1 :(得分:2)

我刚刚嘲笑了一些东西并且它正在为我工​​作(针对.NET 4,VS2012的ASP.NET Web表单),可能看看:

Default.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
相关问题