首先是在WinForm中.一个DataGridView,将其绑定到一个dataSet的一个dataTable上.
设置了dataGridView的AutoGenerateColumns 为 false,并自定义了表格的各列.如果纯粹显示dataTable中的各个字段是没问题,设置各列的DataPropertyName为数据表的字段名即可.现在我想在其dataGridView的其中一列上达到如下功能:
    比如我dataTable上有一个字段为ItemId,字符串类型,dataGridView的一列只显示itemId的前三位.类似这一列的每一行都显示的是字段ItemId的ItemId.SubString(1,3)
请大家指点一点应该怎么处理.

解决方案 »

  1.   

    用datatable的DefaultView.RowFilter,然后dataGridView.DataSource = datatable.DefaultView
      

  2.   


    不是这个意思啊.
    dataGridView已绑定到dataTable了.并且dataGridView中对应的各个column与dataTable的各个字段绑定都没问题.现在是想在dataGridView中增加一列,这一列要绑定到其中一个字段的前三个字符.
      

  3.   

    table改成query,select的时候将想要取三个字符的字段加上截取函数后一并加入select 的列中,就OK了。
      

  4.   

    如:Select ID,name,address,left(address,3) as newaddress from tablename
      

  5.   

    <%#GetStr(Eval("字段"))%>后台写一个方法
    public string GetStr(object ob)
    {
    处理成你想要的结果就后返回就行了
    }
      

  6.   


    这种方法我是知道.通过处理数据源来解决.我是想不通过数据源来处理,而是在已经得到dataTable之后在界面上进行处理.
      

  7.   


    意思是这样的,但我是想在WinForm中,不是WebForm中.
    烦请您再教教在WinForm中的处理方式.
      

  8.   

    昨天终于找到一个示例了.
    先将dataGridView的VirtualMode,再将代码写在DataGridView的CellValueNeeded事件中:具体如下:        private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
            {
                
                if (e.ColumnIndex == ((DataGridView)sender).Columns["要自定显示列的列的名称"].Index)
                {
                      e.Value = "要显示的值的表达式";
                }
            }