使用DataList吧,DataList可以实现上述功能。
解决方案 »
- asp.net 如何显示服务器不是网站部署目录下的的图片,如C://test.jpg
- .net 列表数据循环写法问题
- 编码、解码问题
- 为什么我的页面应用了CSS后调试时不能所见所得?
- ASP.NET安装问题
- 晕死啊,在本机上好好的放上服务器就出错,帮忙看看
- asp.net简单问题,50分献上
- 高手请指点 Microsoft SharePoint Portal Server 2003 的卸载问题,在线等,急急~~~
- 请帮忙如何吧数据存到文本文件中?
- DataGrid问题集锦~~~!!里面没有提到的问题!请解答,100分向送
- 我用下面在代码,选取日期(用日历控件)但总是出现“缺少对象”的错误
- 连接问题!急救
DataList可以实现循环嵌套吗?因为这里面实际上有三层循环[大类->大子类->栏目],而且最后还要取到多选按钮的所有选择值,还要判断大类已选的项目小类不用再选。如点选了大子类“国际新闻”前的按钮后,“国际军事”等均不可选。littlechang(小常) :
TreeView是应该可以,但实际起来好像需要框架或IFrame,与我现在的版面要求不太合。谢谢两位!
当不嵌套时:
<!--这里是第一层-->
<asp:DataList Runat="server" id="DLExampleNewsCate" CellPadding="3" Width=500 HorizontalAlign="Center" DataKeyField="BigCateID" border="1" GridLines="Both">
<ItemTemplate>
<FIELDSET style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 9pt;
BORDER-LEFT: 1px solid; WIDTH: 100%; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 宋体; TEXT-ALIGN: left">
<LEGEND align=left>
<asp:CheckBox id="NewsCateCB" runat="Server" Value='<%# DataBinder.Eval(Container.DataItem,"BigCateID")%>' Text='<%# DataBinder.Eval(Container.DataItem, "NewscateCnName")%>' />
</LEGEND>
</FIELDSET>
</ItemTemplate>
</asp:DataList>
<!--第一层-----结束--> <!--这里是第二层-----开始-->
<asp:DataList Runat="server" id="DLExampleArticleParentType" CellPadding="3" Width="500" HorizontalAlign="Center"
DataKeyField="ArticleParentTypeID" border="1" GridLines="Both">
<ItemTemplate>
<FIELDSET style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 9pt;
BORDER-LEFT: 1px solid; WIDTH: 90%; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 宋体; TEXT-ALIGN: left"
align=center>
<LEGEND align=left>
<asp:CheckBox id='ArticleParentTypeCB' runat='Server'
Value='<%# DataBinder.Eval(Container.DataItem, "TypeID")%>'
Text='<%# DataBinder.Eval(Container.DataItem, "ArticleParentTypeName")%>' />
</LEGEND>
</FIELDSET>
</ItemTemplate>
</asp:DataList>
<!--第二层-----结束--> <!--这里是第三层------开始-->
<asp:DataList Runat="server" id="DLExampleArticleType" CellPadding="3" Width=500 HorizontalAlign="Center"
DataKeyField="ArticleTypeID" border="1" GridLines="Both">
<ItemTemplate>
<asp:CheckBox id='ArticleTypeCB' runat='Server'
Value='<%# DataBinder.Eval(Container.DataItem, "TypeID")%>'
Text='<%# DataBinder.Eval(Container.DataItem, "TypeName")%>' />
</ItemTemplate>
</asp:DataList>
<!--这里是第三层------结束-->
这样可以得到记录结果,但达不到上述效果。
如果用嵌套:
<!--这里是第一层-->
<asp:DataList Runat="server" id="DLExampleNewsCate" CellPadding="3" Width=500 HorizontalAlign="Center" DataKeyField="BigCateID" border="1" GridLines="Both">
<ItemTemplate>
<FIELDSET style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 9pt;
BORDER-LEFT: 1px solid; WIDTH: 100%; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 宋体; TEXT-ALIGN: left">
<LEGEND align=left>
<asp:CheckBox id="NewsCateCB" runat="Server" Value='<%# DataBinder.Eval(Container.DataItem,"BigCateID")%>' Text='<%# DataBinder.Eval(Container.DataItem, "NewscateCnName")%>' />
</LEGEND>
<!--这里是第二层-----开始-->
<asp:DataList Runat="server" id="DLExampleArticleParentType" CellPadding="3" Width="500" HorizontalAlign="Center"
DataKeyField="ArticleParentTypeID" border="1" GridLines="Both">
<ItemTemplate>
<FIELDSET style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 9pt;
BORDER-LEFT: 1px solid; WIDTH: 90%; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 宋体; TEXT-ALIGN: left"
align=center>
<LEGEND align=left>
<asp:CheckBox id='ArticleParentTypeCB' runat='Server'
Value='<%# DataBinder.Eval(Container.DataItem, "TypeID")%>'
Text='<%# DataBinder.Eval(Container.DataItem, "ArticleParentTypeName")%>' />
</LEGEND>
<!--这里是第三层------开始-->
<asp:DataList Runat="server" id="DLExampleArticleType" CellPadding="3" Width=500 HorizontalAlign="Center"
DataKeyField="ArticleTypeID" border="1" GridLines="Both">
<ItemTemplate>
<asp:CheckBox id='ArticleTypeCB' runat='Server'
Value='<%# DataBinder.Eval(Container.DataItem, "TypeID")%>'
Text='<%# DataBinder.Eval(Container.DataItem, "TypeName")%>' />
</ItemTemplate>
</asp:DataList>
<!--这里是第三层------结束-->
</FIELDSET>
</ItemTemplate>
</asp:DataList>
<!--第二层-----结束-->
</FIELDSET>
</ItemTemplate>
</asp:DataList>
<!--第一层-----结束-->嵌套时连记录结果也没有?不知为什么DataList不能嵌套?
解决者80分全给他!
首先把你的三张表读入DataSet,
再用DataSet生成xml,然后绑定到你的xslt,生成html。
比如你的DataSet生成的xml如下(你不一定要写入文件,内存中处理即可):NewsCate.xml
*************************************************<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="NewsCate.xslt" ?>
<NewsCate>
<NewsCateItem value="报纸新闻">
<ArticleParentTypeItem value="国际新闻">
<ArticleTypeItem value="国际要闻"/>
<ArticleTypeItem value="国际社会"/>
<ArticleTypeItem value="国际时事"/>
<ArticleTypeItem value="国际军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="国内新闻">
<ArticleTypeItem value="国内要闻"/>
<ArticleTypeItem value="国内社会"/>
<ArticleTypeItem value="国内时事"/>
<ArticleTypeItem value="国内军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="其他新闻">
<ArticleTypeItem value="其他要闻"/>
<ArticleTypeItem value="其他dgfdg"/>
</ArticleParentTypeItem>
</NewsCateItem><NewsCateItem value="即时新闻">
<ArticleParentTypeItem value="国际新闻">
<ArticleTypeItem value="国际要闻"/>
<ArticleTypeItem value="国际社会"/>
<ArticleTypeItem value="国际时事"/>
<ArticleTypeItem value="国际军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="国内新闻">
<ArticleTypeItem value="国内要闻"/>
<ArticleTypeItem value="国内社会"/>
<ArticleTypeItem value="国内时事"/>
<ArticleTypeItem value="国内军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="其他新闻">
<ArticleTypeItem value="其他要闻"/>
<ArticleTypeItem value="其他dgfdg"/>
</ArticleParentTypeItem>
</NewsCateItem><NewsCateItem value="专题新闻">
<ArticleParentTypeItem value="国际新闻">
<ArticleTypeItem value="国际要闻"/>
<ArticleTypeItem value="国际社会"/>
<ArticleTypeItem value="国际时事"/>
<ArticleTypeItem value="国际军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="国内新闻">
<ArticleTypeItem value="国内要闻"/>
<ArticleTypeItem value="国内社会"/>
<ArticleTypeItem value="国内时事"/>
<ArticleTypeItem value="国内军事"/>
</ArticleParentTypeItem>
<ArticleParentTypeItem value="其他新闻">
<ArticleTypeItem value="其他要闻"/>
<ArticleTypeItem value="其他dgfdg"/>
</ArticleParentTypeItem>
</NewsCateItem>
</NewsCate>
*************************************************NewsCate.xslt
*************************************************
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="no" method="html"/><xsl:template match="/NewsCate">
<xsl:apply-templates select="NewsCateItem"/>
</xsl:template>
<xsl:template match="NewsCateItem">
<FieldSet>
<Legend>
<xsl:value-of select="@value"/>
</Legend>
<xsl:apply-templates select="ArticleParentTypeItem"/>
</FieldSet>
</xsl:template><xsl:template match="ArticleParentTypeItem">
<FieldSet>
<Legend>
<xsl:value-of select="@value"/>
</Legend>
<Legend>
<xsl:apply-templates select="ArticleTypeItem"/>
</Legend>
</FieldSet>
</xsl:template><xsl:template match="ArticleTypeItem">
<input type="checkbox" value="{@value}" ID="'checkbox' + {position()}"/>
<xsl:value-of select="@value"/>
</xsl:template>
</xsl:stylesheet>
***********************************************************************
把这两个文件保存在一个地方,在IE中打开NewsCate.xml,可以看到效果.
写一个web custom control,在Render方法中输出转换结果;