如何在gridview列中显示资源值,具体取决于另一列的值?

时间:2010-11-02 09:52:56

标签: c# asp.net gridview resources

这是我的(工作)

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>                        
    <asp:BoundField HeaderText="Id" DataField="Id" SortExpression="Id">
    </asp:BoundField>
    <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">
    </asp:BoundField>
    <asp:TemplateField>                        
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<% $Resources: Resource, strYes %>' />
        <br />
        <asp:Label ID="Label2" runat="server" Text='<%# Equals("name1",Eval("Name")) %>' />
        <br />
        <asp:Label ID="Label3" runat="server" Text='<%# Eval("Name") %>' />
        <br />
    </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

我想要的是(不工作)

<asp:Label ID="Label4" runat="server" Text='<% (Equals("a",Eval("Name"))) $Resources: Resource, strYes : $Resources: Resource, strNo  %>' />

但我还没有找到如何使它工作! (因此,根据前一列的值,显示一个或另一个Resource项)。

有任何建议可以纠正这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是使用函数的返回值作为标签的文本:

<asp:Label Text="<%# GetLabelText(Container.DataItem) %>" ID="Label1" runat="server" />

然后在.cs文件中

protected string GetLabelText(object dataItem) {
    DataRowView dataRowView = (DataRowView)dataItem;
    string name = (string)dataRowView.Row["Name"];
    return "some string with some logic";
}