打造可持续发展的事业

事业像系统的框架,要稳定、可扩展,同样需要精心设计的!

DNN开发中的一些细节(1)

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

第一次使用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

注意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();

}

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

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

posted on 2006-03-30 19:20  PM2004  阅读(2100)  评论(8编辑  收藏  举报

导航