DNN开发中的一些细节(1)
我开发了一个模块,能够用TreeView控件来显示一个三层的数据结构,其实就是两层Master-Detail级联的关系着的三个表:总部/分公司/办事处。总部可能有n个。
第一次使用TreeView控件还是抓了几个文档学习了一下,主要参考MS的Walkthroungh。也不知道是否采用的方式就是最优的,再慢慢重构!:)
我采用的是XML作为TreeView的数据源。
注意For XML Auto后面不要加上Element,否则在TreeView中设置会复杂一些。
然后,相应定义在DataProvider中的接口并在sqlDataProvider中实现。这里出现了很多问题:
Microsoft.ApplicationBlocks.Data中的sqlHelper对带有参数的存储过程运行ExecuteXmlReader支持有问题:不返回数据。我用sqlCommand执行也不返回数据(ExecuteXmlReader)而普通的ExecuteReader就是OK的能返回数据。非常困惑???
我只好用
取得数据后,
然后在TreeView中定义相应的DataBindings,这个利用它的设置器来完成。
参考MS Walkthrough中有详细的步骤了。
我要将那个编辑的图片(象一支笔)放在旁边,能够独立编辑每个不同类型的对象。等到下次搞完了再写。
第一次使用TreeView控件还是抓了几个文档学习了一下,主要参考MS的Walkthroungh。也不知道是否采用的方式就是最优的,再慢慢重构!:)
我采用的是XML作为TreeView的数据源。
SELECT Main.NameCN,City.CityName, Store.ID,
Store.NameCN AS StoreName
FROM City INNER JOIN
Main ON City.MainID = Main.ID INNER JOIN
Store ON City.ID = Store.CityID FOR XML Auto
Store.NameCN AS StoreName
FROM City INNER JOIN
Main ON City.MainID = Main.ID INNER JOIN
Store ON City.ID = Store.CityID FOR XML Auto
注意For XML Auto后面不要加上Element,否则在TreeView中设置会复杂一些。
然后,相应定义在DataProvider中的接口并在sqlDataProvider中实现。这里出现了很多问题:
Microsoft.ApplicationBlocks.Data中的sqlHelper对带有参数的存储过程运行ExecuteXmlReader支持有问题:不返回数据。我用sqlCommand执行也不返回数据(ExecuteXmlReader)而普通的ExecuteReader就是OK的能返回数据。非常困惑???
我只好用
return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "MainGetStoresForXML",iD);
取得数据后,
private void CreateStoreTree()
{
//Create Tree
MainController ctlMain = new MainController ();
XmlDataSource source = new XmlDataSource();
source.Data = ctlMain.GetStoresByXML(0);
this.tvStore.DataSource = source ;
this.tvStore.DataBind();
}
{
//Create Tree
MainController ctlMain = new MainController ();
XmlDataSource source = new XmlDataSource();
source.Data = ctlMain.GetStoresByXML(0);
this.tvStore.DataSource = source ;
this.tvStore.DataBind();
}
然后在TreeView中定义相应的DataBindings,这个利用它的设置器来完成。
参考MS Walkthrough中有详细的步骤了。
我要将那个编辑的图片(象一支笔)放在旁边,能够独立编辑每个不同类型的对象。等到下次搞完了再写。