我在代码里动态生成了一个DATAGRIDVIEW DGV,一个DATASET DS.DS里有一个表"DATA".我把DGV.DATASOURSE=DS.TABLES["DATA"];
结果我想编辑DGV里的列时,却提示我索引超过什么什么的,不能为负或大于什么的.忘了.
DGV.COLUMNS[0].HEADERTEXT="ID' //这里出错了于是我显示了一下DS里的列数,显示结果为15列,我又显示了一下DGV里的列数,结果显示为0.奇怪了.但我DGV里的数据却是显示正常.是不是我哪里弄错了?还请高手指点.谢谢.
结果我想编辑DGV里的列时,却提示我索引超过什么什么的,不能为负或大于什么的.忘了.
DGV.COLUMNS[0].HEADERTEXT="ID' //这里出错了于是我显示了一下DS里的列数,显示结果为15列,我又显示了一下DGV里的列数,结果显示为0.奇怪了.但我DGV里的数据却是显示正常.是不是我哪里弄错了?还请高手指点.谢谢.
dgrd.datasource==DS.TABLES["DATA"];
dgrd.databind();这个方法才是绑定数据的。
DGV.DataSource=DS.Tables["DATA"];
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = DS.Tables["DATA"];
DATAGRIDVIEW1.Sort(DATAGRIDVIEW1.Columns[0],System.ComponentModel.ListSortDirection.Ascending);
而我在代码里并没有修改过AUTOGENERATECOLUMNS.并且我的DATAGRIDVIEW里的数据显示是正常的,包括列头的显示,都是正常的.
dgv[i].DataSource = ds[i].Tables["查询数据"];
dgv[i].AllowUserToAddRows = false;
dgv[i].AllowUserToDeleteRows = false;
dgv[i].AllowUserToResizeRows = false;
dgv[i].ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dgv[i].ColumnHeadersVisible = true;
dgv[i].MultiSelect = false;
dgv[i].RowHeadersVisible = false;
dgv[i].SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgv[i].Size = new Size(743, 250);
dgv[i].AutoGenerateColumns = true;
MessageBox.Show(dgv[i].Columns.Count.ToString()); //0条记录
MessageBox.Show(ds[i].Tables["查询数据"].Columns.Count.ToString()); //15条记录
//dgv[i].Columns[0].Visible = false; //这里报错,"索引超出范围,必须为非负值并小于集合大小.索引指的是columns[0].因为dgv[i]能正常显示,dgv[i].tostring()也能显示出它是一个datagridview.
flp.Controls.Add(dgv[i]);还请高手帮我看看,谢谢.
this.column_callID.DataPropertyName = "callID";
this.column_callID.HeaderText = "客户号码";
this.column_callID.Name = "column_callID";
this.column_callID.ReadOnly = true;
datagridview.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn [] {column_callID});
注意一下,列的一个属性:DataPropertyName 它是用来设定与之对应的数据库中列的名字的,这样做是可以
显示出来的,你可以试一试