在DataGrid中怎么把表中的数字0,1显示为文字表表述的型式,比如,正常,不正常我有一个属性类,对“0”对应“正常”;“1”对应“不正常”进行了转换。
但用DataGrid显示时,那一列却只能从库中提取原始值,不能进行转换。
怎么样才能使状态0,1在DataGrid中转换为“正常”“不正常”
而且不能用Sql语句去作,因为那一层不让动!
谢谢!

解决方案 »

  1.   

    <asp:TemplateColumn HeaderText="类型"> 
    <ItemTemplate> 
    <asp:Label id=LabelParentName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.IsOption").ToString()=="0"?"必修":"选修"%>'> 
    </asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
    <asp:DropDownList id="Dropdownlist1" runat="server" Width="50px"> 
    <asp:ListItem Value="0">必修</asp:ListItem> 
    <asp:ListItem Value="1">选修</asp:ListItem> 
    </asp:DropDownList> 
    </EditItemTemplate> 
    </asp:TemplateColumn>
      

  2.   

    在DataGrid的数据源中进行编辑,如DataTable,增加一个新列,然后对这个DataTable中的每一行数据进行遍历,把值进行转换后存放到新列中,最后显示字段使用那个新创建的列。
      

  3.   

    在DataGrid的ItemDataBound事件里对你那单元格单独处理一下
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType = ListItemType.AlternatingItem || e.Item.ItemType = ListItemType.Item)
    {
    int i = 2;//单元格顺序
    string innerText = e.Item.Cells[i].Text.Trim();
    switch(innerText)
    {
    case "0":
    e.Item.Cells[i].Text = "正常";
    break;
    case "1":
    e.Item.Cells[i].Text = "不正常";
    break;
    default:
    e.Item.Cells[i].Text = "未知";
    break;
    }
    }
    }把i的位置变成你的