DataGrid有一绑定列,绑定的数据为int型的1或0,显示的时候需要显示为Y或N,如何实现?(不修改数据库)。

解决方案 »

  1.   

    把你的数据作为一个DataSet输出,然后在和DataGrid绑定。可以参考下下面的代码(命名不大规范)
    private DataSet GetDepartmentName(string ygid)
    {
    DataSet rDs=null;
    DataSet ds=new DataSet();
    int count=0;
    try
    {
    string sqlstr="select * from tab_bmpurview where userid='"+ygid+"'";
    ds=data1.dbbind(sqlstr);
    if(ds !=null)
    {
    if(ds.Tables[0].Rows.Count >0)
    {
    foreach(DataRow row in ds.Tables[0].Rows )
    {
    count++;
    string bmid="";
    string bmname=""; bmid=row["bmid"].ToString(); string department="select * from tab_zzjg where id='"+bmid+"'";
    bmname=data1.readout(department,1); //读取部门名称 if(count ==1)
    {
    rDs=new DataSet();
    System.Data.DataTable myTable=new DataTable();
    myTable.TableName ="jxgl_gl";
    myTable.Columns.Add("bmid",System.Type.GetType("System.String"));
    myTable.Columns.Add("bmname",System.Type.GetType("System.String"));
    rDs.Tables.Add(myTable);
    }
    DataRow myrow=rDs.Tables[0].NewRow() ;
    myrow["bmid"]=bmid;
    myrow["bmname"]=bmname;
    rDs.Tables[0].Rows.Add(myrow);
    } }
    else
    {
    rDs=new DataSet();
    System.Data.DataTable myTable=new DataTable();
    myTable.TableName ="jxgl_gl";
    myTable.Columns.Add("bmid",System.Type.GetType("System.String"));
    myTable.Columns.Add("bmname",System.Type.GetType("System.String"));
    rDs.Tables.Add(myTable); //填充数据
    DataRow myrow=rDs.Tables[0].NewRow() ;
    myrow["bmid"]="1";
    myrow["bmname"]="--没有记录--";
    rDs.Tables[0].Rows.Add(myrow); }
    }
    }
    catch(Exception e)
    {
    rDs=null;
    }
    return rDs;
    }
      

  2.   

    没有更简单的方法?比如设计DataGrid时格式化
      

  3.   

    TEXT='<%# DataBind.Eval(Container.DataItem,"字段").ToString()=="1"?"Y":"N"%>'
      

  4.   

    选择的时候在sql语句里处理好,select 字段 case 1 then 'Y' else 'N' from tab_bmpurview where userid='"+ygid+"'"
      

  5.   

    你可以試試這個方法:在你邦定數據的時候,把DataGrid绑定列隱藏,然後在邦定列的後面新增一列,循環
    DataGrid,根據绑定列的值對新增列賦值。一個循環就可以解決了。
      

  6.   

    方法1:可以在 DataGrid1_ItemDataBound事件里判断 当在此之前加一个隐藏列,来绑定‘1’或'0',然后用另外一列显示 ‘N’或‘Y’
    {
      if(e.item.cell[i].Equals("1"))
      {
        e.item.cell[i+1].text = 'N'
      }
      else
      {...}
    }

    方法2:在数据库端处理,
    建议采用 zqsntws(轻松)兄的办法 
      

  7.   

    select case 字段 when 0 then 'Y' when 1 then 'N' end as txtstate from table
      

  8.   

    jerrie_1() ( ) 信誉:100  2006-01-13 11:27:00  得分: 0  
     
     
       TEXT='<%# DataBind.Eval(Container.DataItem,"字段").ToString()=="1"?"Y":"N"%>'
      
     
    觉得这个方法好点,以前类似的贴子也是这样解答的.
    这些东西最好放在前端处理.而且又方便.直接用SQL取值时就转换是可以,但用户需求一变呢?你又得去改了
      

  9.   

    //给DataGrid加文字说明
    private void StusUserInfoList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem))
    {
    bool isxy=Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem,"IsNeedKey"));
    if(isxy==true)
    {
    e.Item.Cells[3].Text="Y.";
    e.Item.Cells[3].BackColor=System.Drawing.Color.Tomato;
    }
    else
    {
    e.Item.Cells[3].Text="N.";
    }
    }
    }