在SQLServer中巧妙存储树形结构数据_第1页
在SQLServer中巧妙存储树形结构数据_第2页
在SQLServer中巧妙存储树形结构数据_第3页
在SQLServer中巧妙存储树形结构数据_第4页
在SQLServer中巧妙存储树形结构数据_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、A提供的树形控件能展示树形层次,但点击+查看当前结点的子结点时造成aspx页面代码执行,重新读取数据库,重新刷新页面,这里javaScript无刷新指的是树形结构数据一次加载完成,点击4展开和一折叠子结点时通过javaScript完成,无页面代码执行,无数据获取操作,无页面刷新。.、A提供的GridView控件只能展示二维的表格信息,如下图所示1HD科WBHanW*i*HW费11月«+«1TE10Q.先4斓不量再西儿灯心底名雷日岳ilflH1*lliUB1峭*用I=百司片苑IS师竹右7IK2看山MO相嶷©e不免不免计则Ji冒TfHW他rjt用指册式用眄漏片箱客

2、於勺左上|XL1*柯也*忡手阵vast30ED桁w阿襁不臾行需密十月丹闺*t上看鬓丹显而在甘无的匚凯帝用拜式用硒.片电奸法?左7户小相同CT】1拒诧不二不建占商院记石叫E冉口业彳用工司e壬在四百131二:庭1jyffiiR»1融削细樗建在;*r15市月小瓶乖第三MS102M斓卡丹庐惴中午上海4丹I世仁耦I出摘1用1崎调朝用Ihe廊珀曩加方X1-24tf用55拒培痂越界点石长近卡二户婀卡riwra同Tl稗于1晴后栩Ei;口持右2X26£lUDrVDfl不曼甲免、司庐训卡西面坦卜骨节飞石2Ix则能近中酋-执揖fl这里树形GridView指的是除了显示多列数据外,还可显示多行数据

3、间树形层次关系如下面的两幅图中GridView有三列,其中分类名称列是树形结构数据文件苔蛉口收藕三ZME超期H名卷1父IMi+>父结点&。(表示是根结点)心2n子结点即W文陶F1后事旧至百W1布=胤丁曰Pl«X(H|,向沾西受I二r首受*生仁国书I总上后台。审品廿一迪。对品翡三牡呷缸B崎品商管理I配=研工岳里±呷纬Fo畸晶也L=呷竹«。洋三铜占七=年K?看仁店阂,Tt:.常E隹F甘押?白三亚付小者尔麻看E小福耳7和H:.麻靛晒比理.新7亍甲管呷弁英必翰F匕罩区7类注上看上模*,区第询当,搔*E区谶上事三为古吁弱&必上幡±1矶巾主就J

4、),揖上看*莫上虬场土楼B也wT变我;”口配小土撵.苫讨三M倭毡.土修L苴年闺子叁搀与二栋学黑懑小恒上殍3一二一丈|外:掾曲U)土修*三由式学上注卜五阜国仔*:*上抄QJ与d出上静4副0花上咨*HiU土厚=NStM上辱4上誉痞啬民±»食堂叵上将苒山过上有地点”春宦CIH理容符播建谈容容普誉蟀售洋棒#>祎惇建糕惇建糅容建法FT不FT不F下不下r不FT下F下下F下下不下下三、在存储树形结构数据时,般按下面的方式建表按上面的方式建表,如使用A的树形控件加载数据时,就得写递归函数,递归加载父结点的子结点有一种巧妙的方式在上面所建的表中再增加一列,如下图所示idclassNam

5、eparentkdparentPath5五华区0.5,求通小区55.6,7一二一大街5,5,7,£云南大学7.5,7.8.新增加的列叫parentPath,记录了从根结点到子结点所经过的所有结点ID,例如从根结点五华区到云南大学子结点所经过的结点为五华区一一二一大街一云南大学,所以parentPath为,5,7,8新增加的列parentPath目的是方便读取树形结构的数据,只需一条简单的SQL语句就可将树形结构信息提取出来SELECT*FROlMparentPath列的表orderbyparentPath通过一句orderbyparentPath简单高效提取了树形结构信四、下面是开发

6、的电子商务类网站项目中的代码下面是建表的SQL语句CREATETABLEdbo.smslocationClass(idintIDENTITY(1,1)NOTNULL,classNamenvarchar(100)NOTNULL,parentIdintNULL,|parentPathnvarchar(500)NULL,depthintNULL,orderPathnvarchar(500)NULL,orderNumintNULL,|parentPathNamenvarchar(1000)NULL,CONSTRAINTPK_sms_locationClassPRIMARYKEYCLUSTERED(id

7、ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFFALLOWROWLOCKS=ON,ALLOWPAGELOCKS=ON)ONPRIMARY)ONPRIMARYGO下图是数据库表结构和数据iddassNaneparefllddepthrctefPdthorderNum1官渡区0,1.qocoi.官澹区一I官渡蹴1,1P2.1OlOl.OMl.官强区一官煜mS&p3官强媚口街2,1.2.3,2OC<J1,OMI,0001,1官遇区官官思藻:街一1官灌t潞1.1.41DM)l,0DC2,1官遁区卡要渥

8、-5五华区D,5.00003.3五华即5梁海小区5,5.61OCW.OQC1,1玉华区鹏源小区-75,5.71OOTOOOC22五华忸一一一反跖一a云国文学72ODOyOtKZ.DOOI,1五华区一_一大圉Y甯大学-§云南省0,S.a3M2W座省一10昆用由5,3.10.1OtiOZOOCl.1云南省-昆明布-11导用站南至尚10,9.10/1.2M-OZ.OKI.QOOt1云南省超市-民用沾宿至迪-12关上机场10,3.10.1ZQ2E南省昆明市俣上机场-13晋城10,3.10.13.2W0DC1,D003.ri!云摩省一晶明市酒城-14盘龙市13刍地13.14.3MO2,00C1

9、,D00._1云南管一昆明市-晋城-盘北市一15路商有4侬胎9.115.10002DM2.2云南省嘛南石柿旅游卜16五华区0,16,qOKU.4五华区一17*龙区0,17.dOKI5盘龙区IS官迪区D,m.a(K<K.6官遁区19西口区0,19.0DOOT.西山区20江岸小区16,16.20.10<H,Q0C1.J五华区五一岸小区-72篆崎麻If;,W.2213五华医专痍胳一U虹U16,T6.23.IQKMOQW,4五华区也山一下面是获取数据的存储过程ALTERPROCEDUREdbo.smsgetlocationClasslistASCREATETABLE#temptable(r

10、ownumberintIDENTITY(1,1),1idintNOTNULL,classNamenvarchar(100)NOTNULL,parentIdint,parentPathnvarchar(500),depthint,orderPathnvarchar(500),orderNumint,parentPathNamenvarchar(1000)INSERTINTO#temptable(id,className,parentId,parentPath,depth,orderPath,orderNum,parentPathName)SELECT*FROMsms_locationClasso

11、rderbysms_locationClass.orderPathSelectid,depth,parentId,className,orderNum,cast(idasnvarchar(20)+''+cast(depthasnvarchar(20)asjsparameter,rownumberFrom#temptableDropTable#temptable该存储过程执行结果如下图所示iddepthparentIddhssMameorderiMuimjspanameterroiwnumberIlia!«-!j1D0官谑区11_01211官意略12_12322官勒路瞄

12、1£23411官渡幡24_14900N南省2&1019昆明市110_1611270昆明站离宅站】111.27122关上机场212_2S13270晋城313_2$14313盘龙市114_3101519路南石林旅游)215_111500五华区35_012615梁源小区113715一二一大街27_114B27云南大学1151600五华区416_01G20116江岸小区1?0_1172211&篆塘路321IB2311G虹山423J19前台页面代码<scriptlanguage="javascript"type="text/javascrip

13、t">functionhideOrShowTr(obj,currid_depth,beginrow)varstrarray=newArray();strarray0=currid_depth.split("_")0;strarray1=currid_depth.split("_")1;varbeginDepth=parseInt(strarray1);varhideTr;if(obj.style.backgroundImage.indexOf('treeclose.gif')!=-1)hideTr=true;elsehid

14、eTr=false;varrowcount=document.getElementById('dg1').rows.length;for(vari=(beginrow+1);i<rowcount;i+)varshowelemid=document.getElementById('dg1').rowsi.id;varstrarray1=newArray();strarray10=showelemid.split("_")0;strarray11=showelemid.split("_")1;varendDepth=pa

15、rseInt(strarray11);if(beginDepth<endDepth)if(hideTr)document.getElementById('dg1').rowsi.style.display="none"elseif(endDepth=beginDepth+1)document.getElementById('dg1').rowsi.style.display=""varbtnHideShow=document.getElementById("hideshowbtn"+strarra

16、y10);if(btnHideShow!=null)btnHideShow.style.backgroundImage="url(./images/tree_open.gif)"elsebreak;if(hideTr)obj.style.backgroundImage="url(./images/tree_open.gif)"elseobj.style.backgroundImage="url(./images/tree_close.gif)"</script><asp:GridViewid="dg1&qu

17、ot;width="100%"AutoGenerateColumns="False"EnableViewState="False"runat="server"OnRowCreated="GridViewRowCreated"="0"BorderWidth="0"RowStyle-BackColor="#F6F6F6"CellPadding="0"CellSpacingFont-Names="Verdana,

18、Helvetica,sans-serif"Font-Size="12px"HeaderStyle-Height="25px"HeaderStyle-CssClass="topbg"HeaderStyle-HorizontalAlign="center"><Columns><asp:TemplateFieldHeaderText<%#strclass(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"id"

19、;)%>HeaderStyle-CssClass="B"><ItemTemplate><tablecellpadding="0"cellspacing="0"border="0"width="100%”><tr><tdstyle="height:21px;"></td></tr></table></ItemTemplate></asp:TemplateField>&l

20、t;asp:TemplateFieldHeaderTextHeaderStyle-CssClass="B"ItemStyle-Width="75px"><ItemTemplate><divstyle="height:19px;width:75px;<atext-align:center;padding-top:2px;">href="?action=upOrder&id=<%#DataBinder.Eval(Container.DataItem,"id")

21、%>">上移<a</a>href="?action=downOrder&id=<%#DataBinder.Eval(Container.DataItem,"id")%>">下移</a></div></ItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderTextHeaderStyle-CssClass="B"ItemStyle-Width="120

22、px"><ItemTemplate><divstyle="height:19px;width:120px;text-align:center;padding-top:2px;"><ahref="?action=edit&id=<%#DataBinder.Eval(Container.DataItem,"id")%>"style="border:0"alt="编辑"/></a>><imgsrc=&quo

23、t;./images/edit.gif"|<ahref="?action=del&id=<%#DataBinder.Eval(Container.DataItem,src="./images/no.gif"style="border:0"alt=""id")%>"删除"/></a>onclick="returnisdel()"><img</div></ItemTemplate></

24、asp:TemplateField></Columns></asp:GridView>后台CS代码绑定数据到GridViewdt_allRecord=SqlHelper.ExecuteDataset(siteInfo.Instant.connectionString,CommandType.StoredProcedure,"sms_getlocationClasslist").Tables0;dv_allRecord=newDataView(dt_allRecord);this.dg1.DataSource=dt_allRecord;this.

25、dg1.DataBind();GridView绑定列调用的函数<%#strclass(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"id")%>publicstringstrclass(intclassid)if(classid=0)dv_allRecord.RowFilter=""elsedv_allRecord.RowFilter="id="+classid.ToString();stringclassname=""System.Data.D

26、ataViewdv_temp=newDataView(dt_allRecord);dv_temp.RowFilter="parentId="+classid;intchildCount=dv_temp.Count;classname+="<tablewidth="100%"border="0"cellspacing="0"cellpadding="0">"classname+="<tr>"for(intj=0;j<dv_all

27、Record.Count;j+)DataRowViewdr=dv_allRecordj;intdepth;depth=Convert.ToInt32(dr"depth");if(depth>0)for(inti=1;i<=depth;i+)#region.classname+="<tdstyle="width:33px;height:21px;background-color:#F6F6F6;"></td>"if(i=depth)if(childCount>0)classname+="<tdstyle="width:21px;height:21px;background-image:url(./images/tree_close.gif);"onclick="hideOrShowTr(this,'"+dr"jsparameter".ToString()+"',"+dr"rownumber".ToString()+")"id=&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论