问题描述
小弟从事asp.net开发,现一项目需采用winform,由于2.0对DataGridView控件改变比较大,遇到一显示问题,还请高手不吝赐教!代码片断如下:foreach(DataTabledtinsearch.ResultForShow.Tables){if(dt!=null&&dt.Rows.Count>0){TabPagesubtp=newTabPage(dt.TableName);DataGridViewdgv=newDataGridView();dgv.Name=dt.TableName;dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;dgv.MultiSelect=false;dgv.DataSource=dt;subtp.Controls.Add(dgv);tc.TabPages.Add(subtp);dgv.Dock=DockStyle.Fill;dgv.CellMouseDoubleClick+=newDataGridViewCellMouseEventHandler(dgv_CellMouseDoubleClick);dgv.CellEndEdit+=newDataGridViewCellEventHandler(dgv_CellEndEdit);dgv.CellBeginEdit+=newDataGridViewCellCancelEventHandler(dgv_CellBeginEdit);dgv.RowHeaderMouseClick+=newDataGridViewCellMouseEventHandler(dgv_RowHeaderMouseClick);dgv.DataBindingComplete+=newDataGridViewBindingCompleteEventHandler(dgv_DataBindingComplete);}}search.ResultForShow.Tables包含4张数据表,希望手动添加4个TabPage,每个TabPage包含一个DataGridView来显示数据。程序运行后,4个TabPage生成成功,但是TabPage中无数据显示,检查过数据表,确实包含数据,检查过TabPage中确实包含已经命名的DataGridView控件,但是无数据显示。
解决方案
解决方案二:
帮顶,没看出代码有什么问题啊
解决方案三:
一定要记得数据更新后调用方法dgv.Bingding();
解决方案四:
我也看不出来什么问题所以才求教楼上的,2.0里面已经没有Bingding()方法了。。。继续期待
解决方案五:
帮顶
解决方案六:
。。。。有没有用答案来顶的兄弟啊
解决方案七:
ding
解决方案八:
帮顶!
解决方案九:
那你自己仔细看下数据的传送过程。讨厌用控件。。更本不知道它的原理找错很麻烦
解决方案十:
嗯我还在一步一步追踪主要应该还是我对2.0版本的DataGridView不是那么了解吧不清楚它数据绑定的机制还是谢谢楼上了
解决方案十一:
你先添加控件后再绑定试试,记得刷新控件.
解决方案十二:
TabControltc=newTabControl();this.Controls.Add(tc);for(inti=0;i<search.ResultForShow.Tables.Count;i++){tc.TabPages.Add(i.ToString());}for(inti=0;i<search.ResultForShow.Tables.Count;i++){DataGridViewdgv=newDataGridView();dgv.Name=search.ResultForShow.Tables[i].TableName;dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;dgv.MultiSelect=false;dgv.DataSource=search.ResultForShow.Tables[i];tc.TabPages[i].Add(dgv);}
看这样行不
解决方案十三:
dgv.databind()
解决方案十四:
好复杂的代码啊
解决方案十五:
dgv.DataSource=dt;dgv.DataSource=dt.DefaultView;试试
解决方案:
帮顶
解决方案:
谢谢大家我先去试试大家的方法
解决方案:
呵呵还是不行,看来要去好好研究一下这控件的机制了
解决方案:
DataGridView控件TabPage中如果有数据,要让其显示,必须保证该控件中<Columns>与</Columns>之间有显示的字段。
解决方案:
试一下楼上的
解决方案:
代码测试是没有问题的,下面给出了form1上点击按钮显示form2的举例,其中使用了两个表。可能的问题还是表中无记录,因为dgv的各个事件没有引发。publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}privatevoidForm2_Load(objectsender,EventArgse){DataSetdataSet=newDataSet();DataTabledataTable1=newDataTable("Table1");dataTable1.Columns.Add("ID",typeof(string));dataTable1.Columns.Add("Name",typeof(string));dataTable1.Rows.Add(newstring[]{"D1","Natalia"});dataTable1.Rows.Add(newstring[]{"D2","Jonathan"});DataTabledataTable2=newDataTable("Table2");dataTable2.Columns.Add("ID",typeof(string));dataTable2.Columns.Add("Name",typeof(string));dataTable2.Rows.Add(newstring[]{"D3","Natalia2"});dataTable2.Rows.Add(newstring[]{"D3","Jonathan2"});dataSet.Tables.Add(dataTable1);dataSet.Tables.Add(dataTable2);foreach(DataTabledtindataSet.Tables){if(dt!=null&&dt.Rows.Count>0){TabPagesubtp=newTabPage(dt.TableName);DataGridViewdgv=newDataGridView();dgv.Name=dt.TableName;dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;dgv.MultiSelect=false;dgv.DataSource=dt;subtp.Controls.Add(dgv);dgv.Dock=DockStyle.Fill;tabControl1.TabPages.Add(subtp);dgv.CellMouseDoubleClick+=newDataGridViewCellMouseEventHandler(dgv_CellMouseDoubleClick);dgv.CellEndEdit+=newDataGridViewCellEventHandler(dgv_CellEndEdit);dgv.CellBeginEdit+=newDataGridViewCellCancelEventHandler(dgv_CellBeginEdit);dgv.RowHeaderMouseClick+=newDataGridViewCellMouseEventHandler(dgv_RowHeaderMouseClick);dgv.DataBindingComplete+=newDataGridViewBindingCompleteEventHandler(dgv_DataBindingComplete);}}}privatevoiddgv_CellMouseDoubleClick(objectsender,DataGridViewCellMouseEventArgse){}privatevoiddgv_CellBeginEdit(objectsender,DataGridViewCellCancelEventArgse){}privatevoiddgv_CellEndEdit(objectsender,DataGridViewCellEventArgse){}privatevoiddgv_RowHeaderMouseClick(objectsender,DataGridViewCellMouseEventArgse){}privatevoiddgv_DataBindingComplete(objectsender,DataGridViewBindingCompleteEventArgse){}}
解决方案:
另,TabPage控件中的DataGridView是否显示了对应的字段(列)名?
解决方案:
帮顶