DataGrid显示问题!
数据库 int类型 1代表“小王”2代表“小张”3代表“小赵”
在DataGrid显示姓名的时候显示的是值
我想让他现成文字应该如何做:
绑定代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
SqlConnection con = DataCon.DataJCon.JCon();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand("Work_GetList",con);
DataSet ds = new DataSet();
sda.Fill(ds,"emp");
this.DataGrid1.DataSource=ds.Tables["emp"];
this.DataGrid1.DataKeyField = "WorkId";
this.DataGrid1.DataBind();
con.Close();
}

解决方案 »

  1.   

    貌似我已经回过了一个用sql语句实现的
      

  2.   

    是呀!我没弄清除SQL语句写在那里存储过程里吗?还是直接写在程序中?
      

  3.   

    SqlConnection con = DataCon.DataJCon.JCon();
    con.Open();
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = new SqlCommand("Work_GetList",con);
    DataSet ds = new DataSet();
    sda.Fill(ds,"emp");
    this.DataGrid1.DataSource=ds.Tables["emp"];
    this.DataGrid1.DataKeyField = "WorkId";
    this.DataGrid1.DataBind();
    con.Close();
      

  4.   

    在SELECT 时进行CASE 处理
      

  5.   

    是呀!我没弄清除SQL语句写在那里存储过程里吗?还是直接写在程序中?
    ===========================
    我是写在存储过程里的.你写程序里也行
      

  6.   

    Work_GetList
    写在我这个查询的存储过程中吗?
      

  7.   

    CREATE PROCEDURE Work_GetList
    AS 
    SELECT * FROM Work
    GO
    这是我查询的存储过程!
      

  8.   

    第一种方法,在数据库返回时就可以转换成相对应的标题.例如
    Select Type,TypeName=(case when type=1 then '小王' when type=2 then '小张' end) From
    tableName (语句可能有问题,呵呵,自己查下,好久没有写过了)
    第二种方法,绑定时可以用模版列(绑定列估计也可以,但我不怎么清楚)
    前面表达式应为<%# DataBinder.Eval(Container.DataItem,"字段")%>
    该为<%# Formating(DataBinder.Eval(Container.DataItem,"字段"))%>
    Formating为后台CS代码中一个public 或者 protected 函数,例如
    protected string Formating(object s)
    {
       string retStr = s.ToString();
       switch
       {
           case 1:retStr="小王";break;
           .......
       }
       return retStr;}
      

  9.   

    CREATE PROCEDURE Work_GetList
    AS 
    SELECT * FROM Work
    GO
    SELECT
        @jgr =   
              CASE
                   WHEN jgr=1 THEN  '小王'
                   WHEN jgr=2 THEN  '小张'
                   WHEN jgr=3 THEN  '小红'
              END
    这样写?jgr是work表中的字段 这样不对吧
      

  10.   

    不可以这样写啊
    你declare @xx varchar 表示定义一个变量
    然后select @xx = 
                  case   ........  jgr=1  ......
      

  11.   


    CREATE PROCEDURE Work_GetList
    AS
    SELECT *,TypeName=(case when jgr=1 then '小王' when jgr=2 then '小红' when jar=3 then '小张' else ''end) FROM Work
    GO
      

  12.   

    SELECT      @D_CREATE=D_CREATE,                         --作成日
    @N_YOSAN=N_YOSAN,                             --予算名称
                                            @N_TOU=N_TOU,                                     --戸数
                                            @M_TOCHIDAIKIN=M_TOCHIDAIKIN,           --土地代金
    @M_TSUBOTAN=M_TSUBOTAN,               --坪単価
                                            @M_TATEGENKA=M_TATEGENKA,             --建物原価(税込)
                                            @M_OPTIONGENKA=M_OPTIONGENKA,       --オプション原価(税込)
                                            @M_TOCHIURI=M_TOCHIURI,                      --土地販売価格
                                            @M_TATEURI=M_TATEURI,                        --建物販売価格(税込み)
                                            @M_TATEURI_SUB=M_TATEURI-M_TATEURI_ZEI,      --建物販売価格(税抜き)
                                            @M_OPTION= M_OPTION,                         --オプション価格(税込)
                                            @STATUS =                                           --確認済の状態
                                                 CASE
                                                         WHEN D_KAKUNIN IS NOT NULL THEN  '確認済'
                                                         WHEN D_KAKUNIN IS  NULL THEN  ' '
                                                 END
                            FROM         P014予算
                            WHERE        C_PRJ = @C_PRJ
                                  AND      CNT = @INTINDEX
      

  13.   

    CREATE PROCEDURE Work_GetList
    AS
    SELECT *,TypeName=(case when jgr=1 then '小王' when jgr=2 then '小红' when jar=3 then '小张' else ''end) FROM Work
    GOjgr列名无效呀!
      

  14.   

    CREATE PROCEDURE Work_GetList
    AS
    SELECT *,TypeName=(case when jgr=1 then '小王' when jgr=2 then '小红' when jar=3 then '小张' else ''end) FROM Work
    GOjgr列名无效呀!JGR是指你的Work表里用来表示‘小王’‘小张’对应的整数的那个字段,你变通下吧。
      

  15.   

    对呀!我Work中的字段就是JGR来表示整数字段的是INT类型!@
      

  16.   

    不行呀!存储过程按照你这样写的然后运行了以后DataGrid中显示人名的地方还是显示的数字呀!
      

  17.   

    测试
    SELECT     
    TypeName = 
      CASE
        WHEN D_KAKUNIN IS NOT NULL THEN  '確認済'
         WHEN D_KAKUNIN IS  NULL THEN  ' '
        END
    FROM         P014予算是可以的
      

  18.   

    select
     ID,
    NAME=
     CASE
       WHEN jgr=1 THEN  '小王'
       WHEN jgr=2 THEN  '小张'
        WHEN jgr=3 THEN  '小红'
      END
    from 表DATAGRID里DATAFIELD对应人名是"NAME"
    把人名改成你自己要的就OK了
      

  19.   

    CREATE PROCEDUER  Work_GetList
    ASSELECT  ID, CASE JGR 
                WHEN '1' THEN  '小王'
                WHEN '2' THEN  '小张'
                WHEN '3' THEN  '小红'
                ELSE ''
                END AS NAME
    FROM  WORK