如何根据gridview中的eval更改项目模板中的显示文本?

时间:2013-02-06 06:45:47

标签: c# asp.net

我有一个GridView,并且有一个名为status的列。在显示此列中的值时,我使用了itemtemplate。目前,它显示了EVAL值的结果,但我想根据eval的值显示文本。

 <asp:GridView ID="GridView1" runat="server"/>
 <Columns>
    <asp:TemplateField HeaderText="Status">
       <ItemTemplate>
        <%# Eval("ICB_SUBS_STATUS")%>
       </ItemTemplate>
       <EditItemTemplate>
           <asp:DropDownList ID="DropDownList1"  runat="server" SelectedValue='<%# Eval("ICB_SUBS_STATUS")%>'>
           <asp:ListItem Value = '0'>Applet not installed.</asp:ListItem>
           <asp:ListItem Value = '1'>ICB Service not activated. Applet installed.</asp:ListItem>
           <asp:ListItem Value = '2'>Active ICB Subscriber. Applet installed.</asp:ListItem>
           <asp:ListItem Value = '3'>Subscriber deactivated ICB. Applet installed.</asp:ListItem>
           </asp:DropDownList>
       </EditItemTemplate>
    </asp:TemplateField>
 </Columns>
</asp:GridView>

与上述情况一样,在编辑模板上,下拉列表文本基于值显示。另外,我想在gridview的正常显示上显示文本。任何想法和建议都会非常有帮助!对不起,如果我的英语很差!

1 个答案:

答案 0 :(得分:4)

在您的代码后面创建一个方法,将该值转换为人类可读的字符串。

protected string Translate_ICB_SUBS_STATUS(int ICB_SUBS_STATUS)
{
    switch (ICB_SUBS_STATUS)
    {
        case 0:
             return "Applet not installed.";
        case 1:
             return "ICB Service not activated. Applet installed.";
        ...

    }
}

然后在您的绑定中,使用方法

<ItemTemplate>
<%# this.Translate_ICB_SUBS_STATUS(Int32.Parse(Container.DataItem("ICB_SUBS_STATUS").ToString())) %>
</ItemTemplate>