数据
业务单位 业务名称 业务金额  缴费状态(0:已缴 1:未缴 2:作废)
单位1   业务1    200       0
单位2   业务1    200       1
单位2   业务1    200       1
单位2   业务1    200       2我想用datagridview在显示数据的时候把缴费状态改为已缴,未缴,作废应该怎么操作?

解决方案 »

  1.   

    再datatable中增加一个计算列
    或者直接在sql中处理
      

  2.   

    数据是从一个服务(不可修改)中取得的,我可以新建一个table把计算好的数据复制过来,这样子是可以的,但是我想知道有没有更便捷的方法
      

  3.   

    (case 缴费状态 when 0 then '已缴' when  1 then '未缴' when 2 then '作废' end )
      

  4.   

    我只能获取数据,不能写sql获取数据!
      

  5.   

    那可以增加一个combo控件,根据数据显示。
    当然,这样得就处理可否编辑的问题。
    那可以自定义一个列,输入数字类型显示文字。
      

  6.   

    或者在绘制的事件中根据数字改写cell的内容
      

  7.   

    你获取的数据应该是DataTable吧?
    如果是DataTable,试试这样行不行for(int i=0;i<dt.rows.count;i++)
    {
    //假设第四列是缴费状态
    switch(dt.rows[i][3].ToString())
    {
    case"0":
       dt.rows[i][3] = "已缴";
       break;
    case"1";
       dt.rows[i][3] = "未缴";
       break;
    default:
       break; 
    }
    }
      

  8.   

    不可以的,在datatable中"缴费状态"那一列是int型的,所以不能赋字符串!
      

  9.   

    我用了一种比较笨的方法解决的!!
    大家有好的方法尽管提  gridRecord.DataSource = dt;
                if (dt != null)
                {
                    gridRecord.Columns.Remove("缴费状态");
                    gridRecord.Columns.Remove("状态");
                    gridRecord.Columns.Add("paystatus", "缴费状态");
                    gridRecord.Columns.Add("status", "有效状态");                gridRecord.Columns["paystatus"].DisplayIndex = 7;
                    gridRecord.Columns["status"].DisplayIndex = 8;
                    int i = 0;
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["缴费状态"].Equals(0))
                        {
                            gridRecord["paystatus", i].Value = "未缴";
                        }
                        else
                        {
                            gridRecord["paystatus", i].Value = "已缴"; 
                        }
                        if (dr["状态"].ToString() == "0")
                        {
                            gridRecord["status", i].Value = "有效";
                        }
                        else if (dr["状态"].ToString() == "1")
                        {
                            gridRecord["status", i].Value = "预作废";
                        }
                        else if (dr["状态"].ToString() == "2")
                        {
                            gridRecord["status", i].Value = "作废";
                        }
                        i++;
                        
                    }
      

  10.   

    有更好的办法:
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/E_System_Windows_Forms_DataGridView_CellFormatting.htm在DataGridView.CellFormatting 事件 中对数据进行处理
      

  11.   

                table.Columns.Add("status",string);
                for(int i=0;i<dt.rows.count;i++)
    {
    //假设第四列是新增的列
    case"0":
       dt.rows[i][4] = "已缴";
       break;
    case"1";
       dt.rows[i][4] = "未缴";
       break;
    default:
       break; 
    }
      

  12.   

    直接在DataGridView里加载数据的时候根据0.1.2去手动的给它个状态好了
      

  13.   

     SqlConnection con = new SqlConnection(@"Data Source=owen\SQL2008;Initial Catalog=mydb;Persist Security Info=True;User ID=sa;Password=sa");
                SqlDataAdapter da = new SqlDataAdapter("select yewudanwei,yewumingchen,yewujine,zhuangtai=case when zhuangtai=0 then '已缴' when zhuangtai=1 then '未缴' else '作废' end from table_1", con);
                DataSet ds = new DataSet();
                con.Open();
                da.Fill(ds, "table_1");
                con.Close();
                dataGridView1.DataSource=ds.Tables[0];
      

  14.   

    SQL语句也可以
    select yewudanwei as '业务单位',yewumingchen as '业务名称',yewujine as '业务金额',缴费状态=case when zhuangtai=0 then '已缴' when zhuangtai=1 then '未缴'else '作废'end from table_1
    也可以
    select yewudanwei as '业务单位',yewumingchen as '业务名称',yewujine as '业务金额',zhuangtai as '缴费状态',缴费状态=case when zhuangtai=0 then '已缴' when zhuangtai=1 then '未缴'else '作废'end from table_1
      

  15.   


    你的数据是只读显示吧?直接改datatable中的数据。然后绑定,gridRecord.DataSource = dt;