问题描述
前天在CSDN下载频道下载了个DataTreeView.怎么用啊.?我用的时候老是报错...请会用的提供个详细的例子,谢谢拉....没用过的,我下面把代码贴上来。.NET高手帮忙看下啊。.谢谢。急..在线等.....这是DateTreeView.cs源代码1楼..这是TreeViewAdv.cs的源代码.2楼...这是我的窗体的代码publicForm1(){InitializeComponent();conn=t.s();//OracleCommandcm=newOracleCommand("select*fromemp",conn);OracleDataAdapterdr=newOracleDataAdapter("select*fromemp",conn);//DataSetds=newDataSet();DataTabledt=newDataTable();dr.FillSchema(dt,System.Data.SchemaType.Source);dr.Fill(dt);//DataTabledt=newDataTable();//DataGridViewd=newDataGridView();//d.DataSource=ds.Tables[0];//treegrid.DataSource=ds.Tables[0];dataGridView1.DataSource=dt;//label2.Text=dt.Columns[dt.PrimaryKey.id];try{this.td.DataSource=dt;}catch(Exceptione){this.label1.Text=e.ToString();}conn.Close();}运行就报Invalidtablestructure!异常.我看了一下.是DataTreeView.cs中的publicboolCheckTableStructure(DataTabletable){if(table==null)returnfalse;if((table.Columns[this.primaryKeys.ID]==null)||(table.Columns[this.primaryKeys.ParentID]==null)||(table.Columns[this.primaryKeys.Sequence]==null)){returnfalse;}这里返回的false.是主键的问题吗?我都手动设置了主键啊。请高手啊。......
解决方案
解决方案二:
这是DataTreeView.cs的部分代码#regionMemberinternalboolhasChanges=false;protectedboolhasErrors=false;protectedDataTabledataSource=null;privateDataTreeViewKeysprimaryKeys;privateDataTreeViewDataSourceTypedataSourceType=DataTreeViewDataSourceType.Unknow;privateDataColumn[]tablePK=null;privatestringnodeTextField="Name";#endregionprivatevoidInitalizeDataTreeView(){this.primaryKeys=DataTreeViewKeys.Default;this.ListenNodeOpEvents();InitExtendMenu();}internalDataTableGetSrcDataTable(){returnthis.dataSource;}#regionExtendeventspublicdelegatevoidDataSourceChangedHandle(objectsender,DataTreeViewDataSourceChangeEventArgse);publiceventDataSourceChangedHandleDataSourceChanged=null;#endregion#regionExtendinterfacepublicDataTreeViewKeysPrimaryKeys{get{returnthis.primaryKeys;}set{this.primaryKeys=value;}}publicstringNodeTextField{set{this.nodeTextField=value;if((this.nodeTextField==null)||(this.nodeTextField==string.Empty)){this.nodeTextField="Name";}}get{returnthis.nodeTextField;}}publicboolHasChanges{get{//returnthis.hasChanges;if((this.dataSource!=null)&&(this.dataSource.GetChanges()!=null)){returntrue;}else{returnfalse;}}}publicboolHasErrors{get{returnthis.hasErrors;}}publicvirtualvoidLoadFromXml(stringflieName){this.dataSourceType=DataTreeViewDataSourceType.XML;DataSetds=newDataSet("TreeViewStructure");ds.ReadXml(flieName);this.DataSource=ds.Tables[0];}publicvirtualvoidSaveToXml(stringfileName){if(this.dataSource==null){this.CreateDataSourceStructure();}this.AcceptDataSourceChanges();DataSetds=this.dataSource.DataSet;if(ds==null){ds=newDataSet("TreeViewStructure");ds.Tables.Add(this.dataSource);}ds.WriteXml(fileName,XmlWriteMode.WriteSchema);}publicvirtualDataTableDataSource{get{if(this.dataSource!=null){this.AcceptDataSourceChanges();this.ResetTablePK();}returnthis.dataSource;}set{this.dataSource=value;if(this.dataSource==null){if(this.DataSourceChanged!=null){this.DataSourceChanged(this,newDataTreeViewDataSourceChangeEventArgs(DataTreeViewDataSourceType.Unknow));}return;}if((!this.dataSource.HasErrors)&&(this.dataSourceType==DataTreeViewDataSourceType.XML)){this.dataSource.AcceptChanges();}this.LoadData();this.CancelTablePK();if(this.DataSourceChanged!=null){if(this.dataSourceType==DataTreeViewDataSourceType.Unknow){this.dataSourceType=DataTreeViewDataSourceType.DataBase;}this.DataSourceChanged(this,newDataTreeViewDataSourceChangeEventArgs(dataSourceType));}}}publicvoidAcceptDataSourceChanges(){if(this.dataSource!=null){this.AcceptChangeToDataSource(this.Nodes);//this.LoadData();}}publicvoidRejectDataSourceChanges(){if(this.dataSource!=null){this.dataSource.RejectChanges();this.LoadData();}}
解决方案三:
这也是DataTreeView.cs的部分代码publicboolCheckTableStructure(DataTabletable){if(table==null)returnfalse;if((table.Columns[this.primaryKeys.ID]==null)||(table.Columns[this.primaryKeys.ParentID]==null)||(table.Columns[this.primaryKeys.Sequence]==null)){returnfalse;}if((table.Columns[this.primaryKeys.ID].DataType!=System.Type.GetType("System.String"))||(table.Columns[this.primaryKeys.ParentID].DataType!=System.Type.GetType("System.String"))||((table.Columns[this.primaryKeys.Sequence].DataType!=System.Type.GetType("System.Int64"))&&(table.Columns[this.primaryKeys.Sequence].DataType!=System.Type.GetType("System.Int32"))&&(table.Columns[this.primaryKeys.Sequence].DataType!=System.Type.GetType("System.Int16")))){returnfalse;}returntrue;}publicDataTableCreateDataSourceStructure(){this.dataSource=newDataTable("DataTreeViewConfig");this.dataSource.Columns.Add(this.primaryKeys.ID,System.Type.GetType("System.String"));this.dataSource.Columns.Add(this.primaryKeys.ParentID,System.Type.GetType("System.String"));this.dataSource.Columns.Add(this.primaryKeys.Sequence,System.Type.GetType("System.Int64"));this.dataSource.Columns.Add("Text",System.Type.GetType("System.String"));returnthis.dataSource;}publicvoidWriteTreeRelation(stringsrcField,stringdestField,stringseparator){if(this.dataSource==null){thrownewException("DataSourceisnull!");}if((this.dataSource.Columns[srcField]==null)||(this.dataSource.Columns[destField]==null)){thrownewException("invalidsourcefieldordestinationfieldname!");}if((this.dataSource.Columns[srcField].DataType!=typeof(string))||(this.dataSource.Columns[destField].DataType!=typeof(string))){thrownewException("invalidsourcefieldordestinationfieldtype!");}separator=(separator==null)?string.Empty:separator;foreach(TreeNodenodeinthis.Nodes){this.WriteFullPathInfo(node,srcField,destField,separator);}}publicenumDataTreeViewDataSourceType{Unknow=0,DataBase,XML}publicclassDataTreeViewDataSourceChangeEventArgs:EventArgs{privateDataTreeViewDataSourceTypedataSourceType=DataTreeViewDataSourceType.Unknow;publicDataTreeViewDataSourceChangeEventArgs(DataTreeViewDataSourceTypedataSourceType):base(){this.dataSourceType=dataSourceType;}publicDataTreeViewDataSourceTypeDataSourceType{get{returnthis.dataSourceType;}}}publicstructDataTreeViewKeys{publicDataTreeViewKeys(stringidName,stringpIdName,stringseqName){this.ID=idName;this.ParentID=pIdName;this.Sequence=seqName;}publicstringID;publicstringParentID;publicstringSequence;publicstaticDataTreeViewKeysDefault{get{DataTreeViewKeyskeys=newDataTreeViewKeys();keys.ID="ID";keys.ParentID="ParentID";keys.Sequence="Sequence";returnkeys;}}
解决方案四:
dataGridView1.SelectedDataKey[0]
解决方案五:
帖的时候才发现太长了..只贴了DataTreeView.cs的部分代码..请高手帮忙看下啊。..谢谢拉.....
解决方案六:
3楼的,不是DataGridView控件...而且也没有那个属性.继续期待高手.....
解决方案七:
没有人用过吗?急啊......