none
datatable 的问题,行标题的问题 RRS feed

  • 问题

  • 大家好。datagridview 的话,有列标题和行标题,在datatable Columns.Add("aa"),绑定的时候 datagridview 列标题有了,但是 datatable rows.add("")之后,列标题怎么没有啊?怎么办?

    1. 能否通过设置datatable 使得datagridview绑定显示的时候,能够显示行标题?

    2. 有没有能不要一行一行读取写入datatable的方法,直接 像赋值一样方便地把datagridview中的值写入datatable?


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年12月2日 5:09

答案

全部回复

  • 您好

    1. 能否通过设置datatable 使得datagridview绑定显示的时候,能够显示行标题?

    您目前代碼怎麼寫的? 應該不會有此問題,參考以下代碼看看

            DataTable dt = new DataTable();
            private void Form1_Load(object sender, EventArgs e)
            {
                dt.Columns.Add("aa");
                this.dataGridView1.DataSource = dt;
            }

     

    2. 有没有能不要一行一行读取写入datatable的方法,直接 像赋值一样方便地把datagridview中的值写入datatable?

    您 [一行一行读取写入datatable] 所讀取的來源是什麼?


    歡迎參觀我的Blog.NET菜鳥自救會
    2010年12月2日 6:19
  • 谢谢小欧。

    1. dt.Columns.Add("aa"); 绑定到 datagridview 时 显示的是每一列的 列标题啊。我要每一行的行标题,可以在datatable里做么

    2. 读取的来源是 datagridview 里的行,要写入datatable ,datagridview 和datatable 不绑定的时候


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年12月2日 6:38
  • 大家好。datagridview 的话,有列标题和行标题,在datatable Columns.Add("aa"),绑定的时候 datagridview 列标题有了,但是 datatable rows.add("")之后,列标题怎么没有啊?怎么办?

    1. 能否通过设置datatable 使得datagridview绑定显示的时候,能够显示行标题?

    2. 有没有能不要一行一行读取写入datatable的方法,直接 像赋值一样方便地把datagridview中的值写入datatable?


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……

    你好,我在改变DataGridView数据时,都是操作DataTable来完成的。

    1、显示行标题(数据表比较大时对执行速度有些影响)没试过,下面的代码供你参考一下。
    string[] rowTitle = new string[dt.Rows.Count]{"第一行","第二行",.......};    // 定义你的行标题数组,数据表dt是你要绑定到DataGridView的数据源。
    在DataGridView中添加RowPostPaint事件:
            private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
                TextRenderer.DrawText(e.Graphics, rowTitle[e.RowIndex], dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
            }

    2、把DataGridView中的值直接写入DataTable,我的方法是:
    DataTable dt = (DataTable)dataGridView1.DataSource;    // 将DataGridView的数据源转换成DataTable
    这样数据表dt就是DataGridView中的内容。


     


    jianwu0929
    2010年12月2日 9:55
  • 谢谢 jianwu0929

    在datagridview中如果要显示行标题的话,直接赋值也行的吧,是没问题的,我已经试过了,可以不在rowpostpaint中写的,是不是datatable 没有行标题这一个属性啊?

    第二个我试一下好像不行啊。因为 第一个datagridview1它是直接生成填入的,并没有像Datatable一样的datasource,所以不行。。不知道是不是这样,还是我操作错了?


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年12月3日 1:15
  • DEAR
    1.Datatable的标题就是Column,若你是要用datagridview显示标题,可以用 HeaderText 属性
    this.dataGridView1.Columns[0].HeaderText = "檔案位置";

    2.你为何要直接操作datagridview1?建议你把资料处理好后再与datagridview1绑定,否则你只能一笔一笔读出来;若你的datagridview1是手动填入,你可使用BindingSource+bindingNavigator进行资料绑定。

    [Edit this entry.] [ADO.NET] 使用 BindingSource 與 bindingNavigator
    http://www.dotblogs.com.tw/yc421206/archive/2010/09/21/17831.aspx

    控件的资料绑定请参考
    http://www.dotblogs.com.tw/yc421206/archive/2009/10/30/11360.aspx
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月3日 2:32