权限的文字替换例如:把“111”替换成“浏览,修改,删除” 把“101”替换成“浏览,删除”诸如此类;
代码:
            DataGridViewRow dgr = dataGridView1.Rows[e.RowIndex];
            string str = dgr.Cells["em_userrights"].Value.ToString();
                        if (dgr.Cells["em_delete"].Value.ToString() == "0")
            {
                dgr.Cells["em_delete"].Value = "未删除";
            }
            else if (dgr.Cells["em_delete"].Value.ToString() == "1")
            {
                dgr.Cells["em_delete"].Value = "已删除";
            }
           
            
            string str1 = " ";
            if (str[0] == '1')
            {
                str1 = "添加";
            }
            if (str[1] == '1')
            {
                str1 += " 修改";
            }
            if (str[2] == '1')
            {
                str1 +=  " 报表";
            }
            if (str[3] == '1')
            {
                str1 += " 用户";
            }
            dgr.Cells["em_userrights"].Value = str1;第一步的已删除和未删除替换没问题,第二步的权限替换在几次循环之后就提示:数组索引超出范围,在str【2】处提示。
数据库的字段都正常,不知道哪里出了问题。求达人帮助。
ps:如果问题说的不明白 我再补充。

解决方案 »

  1.   

    判断一下你的str.Length如果不大于3的话,肯定就会越界的
      

  2.   

    如果我没有理解错的话,你的浏览,修改,删除三个值在数据库在存的是数字组合是吧!如果是这样的,我觉的最好的解决方案就是在查询数据的时候,就进行转换.datagridview里只显示就行.还提高了性能.
      

  3.   

    你这个str[]数组是怎么定义的啊,没看到啊
      

  4.   

    sql server 服务器,权限字段类型是varchar 长度50. 我用11111111来表示,不同位置的1代表不同权限,不同的组合代表不同组合的权限。所以这个数组越界的问题搞的我很糊涂。不知道是不是数据库的特征问题。我以前做过一个access的就没出现这种问题。
      

  5.   

    字符串 。:string str = dgr.Cells["em_userrights"].Value.ToString(); 
      

  6.   

    应该是某个时候str的值不正确 
      

  7.   


    给你个参照:select 字段 CASE WHEN sex = '1' THEN '男'
    WHEN sex = '2' THEN '女'
    ELSE '其他' END from 表