比如数据库里列保存的是“1”或“0”,我要显示“是”或“否”,我有一个方法string DataStringFormat(string getData)返回相应汉字字符的,请问如何设置DataGridView列应用这一方法,最好是设置方式而不是编码方式。

解决方案 »

  1.   

    用三元运算符,形如:Bindvalue=="1"?"是":"否"
      

  2.   

    另外有可能是多元的,比如数据库里有个表示状态的字段,值为数字如: 1 2 3 4 ………… 绑定到datagridview显示时要跟据值改成:状态1 状态2 状态3 …………
      

  3.   

    自定义或绑定列都一样,反正都要在前台显示状态吗;
    如果是多元的话可以在后台写个方法:
    public string changstr(string test)
    {
       if(test=="1")
       {
          return "是";
        }
        if(test=="0")
        {
           return "否";
        }
     ....(其它)}前台调用:
    <%# changstr(Convert.ToString(DataBinder.Eval(Container.DataItem,"flag")))%>...
      

  4.   

    webform这样没错,但是winform我不知道该写在哪
      

  5.   

    先说一下我现在的权宜之计,我是在CellFormatting事件里添加的
            private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                try
                {
                    if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "过荷保护")
                    {
                        if (e.Value.ToString() == "0")
                        {
                            e.Value = "状态0";
                        }
                        else if (e.Value.ToString() == "1")
                        {
                            e.Value = "状态1";
                        }
                    }
                }
                catch { }
            }
    虽然达到了我要的效果,但是表格数据一旦比较庞大,花费的时间就会成倍增加。我想要的就是类似web里面的那种方法,但是在winform里就不知道该如何去搞了
      

  6.   

    最好的办法就是如楼主说的在CellFormatting事件中添加....如果觉得效率低,这样行不行...即在从数据库中取出数据的时候设置一下...for exampel:select (case flag when 1 then '是' when 0 then '否' end) as Flag from table;然后再绑定到DataGridView上即可..
      

  7.   

    可以把该列设置成CheckBox列/// <summary>
            /// 設置datagridview中某個欄位為CheckBox
            /// </summary>
            /// <param name="iColumn">需要更改的欄位號</param>
            public void SetCheckBoxColumns(int iColumn, string iColName)
            {
                this.dataGridView1.Columns.RemoveAt(iColumn);
                DataGridViewCheckBoxColumn checkboxColumn = new DataGridViewCheckBoxColumn();
                checkboxColumn = CreateCheckBoxColumn(iColName);
                this.dataGridView1.Columns.Insert(iColumn, checkboxColumn);
            }        /// <summary>
            /// 取得datagridview中一個CheckBox欄位的屬性        /// </summary>
            /// <returns>格式化以後的datagridview的CheckBoxColumn</returns>
            public virtual DataGridViewCheckBoxColumn CreateCheckBoxColumn(string iCol)
            {
                DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
                {
                    column.DataPropertyName = iCol;
                    column.ThreeState = false;
                    column.TrueValue = "Y";
                    column.FalseValue = "N";
                    column.HeaderText = ResourceFactory.GetMultilanguage(iCol);
                }
                return column;
            }
      

  8.   

    我认为有几种方法:
    1、查询语句用
    select (case flag when 1 then '是' when 0 then '否' end) as Flag from table;
    2.在程序加载数据的时候判断,替换,
      

  9.   

    sql语句我曾经想过,但是不大可行,因为字段太多(64个),这样sql语句就太庞大了,而且由于是低版本的access,没办法用存储过程。项目追的很紧,暂时先这样对付一下,以后有时间再研究吧,谢谢大家。
      

  10.   

    对,就是在CellFormatting事件里处理就可以了.