我开发了一个模块,能够用TreeView控件来显示一个三层的数据结构,其实就是两层Master-Detail级联的关系着的三个表:总部/分公司/办事处。总部可能有n个。

第一次使用TreeView控件还是抓了几个文档学习了一下,主要参考MS的Walkthroungh。也不知道是否采用的方式就是最优的,再慢慢重构!:)

我采用的是XML作为TreeView的数据源。

DNN开发中的一些细节(1)SELECT Main.NameCN,City.CityName, Store.ID, 
DNN开发中的一些细节(1)      Store.NameCN 
AS StoreName
DNN开发中的一些细节(1)
FROM City INNER JOIN
DNN开发中的一些细节(1)      Main 
ON City.MainID = Main.ID INNER JOIN
DNN开发中的一些细节(1)      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的能返回数据。非常困惑???
我只好用

DNN开发中的一些细节(1)return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "MainGetStoresForXML",iD);

取得数据后,

DNN开发中的一些细节(1) private void CreateStoreTree()
}

然后在TreeView中定义相应的DataBindings,这个利用它的设置器来完成。
参考MS Walkthrough中有详细的步骤了。

我要将那个编辑的图片(象一支笔)放在旁边,能够独立编辑每个不同类型的对象。等到下次搞完了再写。

相关文章: