none
DataGridView 控件为什么不能直接显示byte[]数据 RRS feed

  • 问题

  • 我的数据库是oracle数据库,

    数据表中有RAW类型的数据字段,

    这些数据只是二进制码,比如0xCD78,

     我想直接显示为CD78,

    DataGridView 控件为什么不能直接显示。

    怎么才能更改DataGridView字段的显示格式,把byte转换为string。

    2010年6月19日 17:57

答案

  • 你是怎么绑定的,你可以把数据读出来,

    然后把每一行的byte类型转换为字符串,使用for循环赋值给 datagridview中每一行的单元格


    努力+方法=成功
    2010年6月20日 4:29
  • 你好!

       是这样的,你使用DataGridView绑定数组的时候,默认显示的是数组元素的第一个公共属性,你这里显示的就是byte的第一个公共属性,byte并没有这样的属性,所以就什么也没有显示了!

       你可以另外定义一个类来包装byte,给这个类定义一个公共属性,显示合适的值,然后绑定这个类的数组!


    周雪峰
    2010年6月20日 4:37
    版主

全部回复

  • 你可以把你的byte转化为string,然后显示在datagridview中

    datagridview是不能直接显示byte类型的


    努力+方法=成功
    2010年6月20日 2:03
  • 恩,是的,这些我知道,但怎么转换呢,我的数据使用绑定显示的,在什么地方可以转换?

     

    2010年6月20日 3:45
  • 你是怎么绑定的,你可以把数据读出来,

    然后把每一行的byte类型转换为字符串,使用for循环赋值给 datagridview中每一行的单元格


    努力+方法=成功
    2010年6月20日 4:29
  • 你好!

       是这样的,你使用DataGridView绑定数组的时候,默认显示的是数组元素的第一个公共属性,你这里显示的就是byte的第一个公共属性,byte并没有这样的属性,所以就什么也没有显示了!

       你可以另外定义一个类来包装byte,给这个类定义一个公共属性,显示合适的值,然后绑定这个类的数组!


    周雪峰
    2010年6月20日 4:37
    版主
  • 以下是我的绑定代码

                   DataSet ds = new DataSet();
                   DataTable dtinfo = new DataTable();

                try

                   {

                     conn.Open();
                    OracleCommand MyCommand = new OracleCommand("select A, B, C  from test", conn);
                    OracleDataAdapter MyAdapter = new OracleDataAdapter();
                    MyAdapter.SelectCommand = MyCommand;
                    MyAdapter.Fill(dtinfo);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                bindingSource1.DataSource = dtimfo;
                bindingNavigator1.BindingSource = bindingSource1;
                dataGridView1.DataSource = bindingSource1;

    其中test表的A,B字段为varchar2类型,C字段是raw类型,

    我是C#新手,请各位帮忙解决问题。

    2010年6月21日 4:17