在select 语句中改过来
select case  when columnname=1 then '管理员'
        case  when columnname=2 then '普通用户'
       end as columnname 
from tablename

解决方案 »

  1.   

    DataGrid有一个事件叫ItemDataBind,这是在绑定DataGrid每一行的时候调用的,你可以用一个隐藏的列来记录1,2,然后在这个事件中把你想要显示的显示出来
    假设你的隐藏列是第7列,想要显示的列是第5列
    private void Datagrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        if((e.Item.ItemType!=ListItemType.Header)&&(e.Item.ItemType!=ListItemType.Footer))
        {
            if(e.Item.Cells[7].Text.Trim() == "1")
            {
        e.Item.Cells[5].Text = "管理员";
            }
            if(e.Item.Cells[7].Text.Trim() == "2")
            {
             e.Item.Cells[5].Text = "普通用户";
            }
        }
    }
      

  2.   

    如果你的sql语句不方便变动,可以考虑这种方法
      

  3.   

    谢谢大家。我的问题解决了。yaopeng117,Changezhong的提议不错。Stored procedure中的修改比较麻烦,我想在view层处理比较好.谢谢大家.
      

  4.   

    我最后才用的方法是: 在databind之后,再去取出这些需要改变的值1,2,然后重写成staff和administrator:
    for (int i= 0; i< this.dgUserList.Items.Count; i++)
    {
    if ( this.dgUserList.Items[i].Cells[ROLE_COLUMN_INDEX].Text == "1")
     this.dgUserList.Items[i].Cells[ROLE_COLUMN_INDEX].Text = "Staff";
    else
     this.dgUserList.Items[i].Cells[ROLE_COLUMN_INDEX].Text = "Adnimistrator";
    }
    不知道这个方法有和Changezhong的方法相比,哪个更好?隐藏列的问题值得研究,让我开了眼界.谢谢大家.
      

  5.   

    如果不用隐藏列是不是还要节约内存资源? if(e.Item.Cells[7].Text.Trim() == "1")
            {
        e.Item.Cells[7].Text = "管理员";
            }
      

  6.   

    用的着这复杂吗,我有个简单的方法就是采用模板列(比如绑定一个Label),这个Label的Text属性在数据绑定时设为一个后台过程.
    页面文件:
    <asp:Label id=Label1 runat="server" Text='<%# GetText(DataBinder.Eval(Container, "DataItem.queue_id")) %>'></asp:Label>后台代码文件:
    protected string GetText(object ID)
    {
                           switch (int.parse(ID))
                           {
                               case 1:
    return "管理员";
    case 2:
    return "普通用户";
    default:
    return "未知用户";
         } 
    }
      

  7.   

    其它楼上的几位方法和我这方法都能解决这个问题,不过我这方法又体现了另外的一种思路,而且关于DataGrid很多问题都能用这方法搞定。
      

  8.   

    按模式规范的观点,放在view上处理显然不太好。这个最好还是放在比较低的层上处理。