我的datagridview有一自定义列QuanXian绑定到数据库的flg(char(1)),,我想显示时1为管理员、0为用户,但出现长度限制的错误,高手帮忙!!
代码:
foreach (DataGridViewRow row in this.dataGridView1.Rows)
            {
              //quanxian
                if (row.Cells["QuanXian"].Value.ToString() == "1")
                {
                    row.Cells["QuanXian"].Value = "管理员";//出错,说是超出长度限制,数据库中flg类型char(1)
                }
                else
                {
                    if (row.Cells["QuanXian"].Value.ToString() == “0”)
                    {
                        row.Cells["QuanXian"].Value = “用户”;//出错,说是超出长度限制
                    }
                }
            }

解决方案 »

  1.   

    这样修改下试试:
    foreach (DataGridViewRow row in this.dataGridView1.Rows) 
                { 
                  //quanxian 
                    if (row.Cells["QuanXian"].Value.ToString() == "1") 
                    { 
                        row.Cells["QuanXian"].Value.trim() = "管理员"; 
                    } 
                    else 
                    { 
                        if (row.Cells["QuanXian"].Value.ToString() == “0”) 
                        { 
                            row.Cells["QuanXian"].Value.trim() = “用户”;
                        } 
                    } 
                } 
      

  2.   

    如果row.Cells["QuanXian"].Value存放的不是字符串还要在后面加上.tostring()
    即row.Cells["QuanXian"].Value.ToString().trim();
      

  3.   

    Datagridview没用过
    不能这样写吧,Datagridview貌似只能绑定数据源吧,页面上只能判断,修改还是得到数据库得吧?
    给个我得建议:把SQL改成这样看看select distinct(
    (case when USERROLE=1 then N'管理员'
    when USERROLE=0 then N'用户' end))as USERROLE
     from tablename
      

  4.   

    两个办法,LS已经说了一个,我再重复一遍取数据的时候,写sql语句的时候,这样写
    select *,(case quanxian when 1 then N'管理员'
    when 0 then N'用户' end) as USERROLE
    from 表名
    这个在绑定的时候,绑定USERROLE字段
    第二个办法:
    得到DataSet以后,给你要绑定的table加一列,这一列的值就根据你的quanxian那列的值来赋值,绑定时,显示这一列
      

  5.   

    谢谢各位大侠,我已经自己解决了,可以在绑定之前设置dataset中的列宽度,再绑定就Ok了