两个DataList嵌套,内层如何获得外层动态值作为自己的参数?
假设有一个类似论坛回帖列表的实现。
用到了2个DataList嵌套,其中有DataList1+ObjeckDataSource1和DataList2+ObjeckDataSource2(在1的内部)。
DataList1循环显示从数据库查询到的各条信息,其中假设有一个名为AUTHOR的值。
这时候想要让DataList2+ObjeckDataSource2获得这个动态的AUTHOR值,然后让这个值作为ObjeckDataSource2的SELECT方法的参数传递。
需要怎么做到?
- C# code
<asp:DataList ID="DataList1" runat="server" DataSourceID="ObjectDataSource1" Width="100%" DataKeyField="AUTHOR"> <ItemTemplate> <table> <tr> <td> <%#Eval("AUTHOR") %> </td> </tr> <tr> <td> <asp:DataList ID="DataList2" runat="server" DataSourceID="ObjectDataSource2"> <ItemTemplate> <table> <tr> <td> 查询得到用户密码:<%#Eval("PASSWORD") %> </td> </tr> </table> </ItemTemplate> </asp:DataList> </td> </tr> </table> </ItemTemplate> </asp:DataList><asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetReplaysById" TypeName="MyBBSBLL.TitleManager"> <SelectParameters> <asp:QueryStringParameter Name="_titleid" QueryStringField="titleid" Type="Int32" /> <asp:QueryStringParameter DefaultValue="1" Name="_page" QueryStringField="page" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource> <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetUserInfoByUserName" TypeName="MyBBSBLL.UserManager"> <SelectParameters> <asp:ControlParameter ControlID="DataList1" Name="_username" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:ObjectDataSource>代码如上,datalist1可以正常显示,而datalist2因为ObjectDataSource2无法获得参数所以无法查询。
ObjectDataSource2用什么方法可以获得datalist1中的动态的AUTHOR值?
谢谢
[解决办法]
DataList1 ItemBind事件的时候取到值来绑—ataList2
[解决办法]
- C# code
<asp:DataList id="DataList2" runat="server" DataSourceID="SqlDataSource2">
<ItemTemplate>
<tr>
<td class="news_title_td" style="width:500;">
<a style="font-weight: bold; font-size: 13px;color:White;" href=' <%# "newstypeshow.aspx?newstypeid=" + Eval("newstypeid") %>' target="_blank"> <%# Eval("newstype")%> </a> </td>
</tr>
<tr> <td>
<asp:DataList ID="DataList3" runat="server" DataKeyField="newsid" DataSourceID="SqlDataSource3">
<ItemTemplate>
<table style="width:500px;">
<tr>
<td width="20"> <img src="images/yy.gif" width="18" height="18" /> </td>
<td width="350">
<a style="font-size:12px;color:White;" href=' <%# "newsshow.aspx?newsid=" + Eval("newsid") %>' target="_blank"> <%# Eval("newstitle") %> </a>
</td>
<td width="130" style="font-size:12px;color:White;text-align:center;">[ <%# Eval("newsdate").ToString() %>] </td>
</tr> </table>
</ItemTemplate>
</asp:DataList> <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString=" <%$ ConnectionStrings:rxConnectionString %>"
SelectCommand=' <%# "SELECT top 4 * FROM [led_news] WHERE [newstypeid]=" + Eval("newstypeid") + " ORDER BY [newsid] desc" %>'> </asp:SqlDataSource>
</td> </tr>
</ItemTemplate>
<HeaderTemplate>
<table align="center" style="width:500px;">
</HeaderTemplate>
<FooterTemplate> </table>
</FooterTemplate>
</asp:DataList> <asp:SqlDataSource id="SqlDataSource2" runat="server" SelectCommand="SELECT * FROM [led_newstype]" ConnectionString=" <%$ ConnectionStrings:rxConnectionString %>"> </asp:SqlDataSource>
绝对可用 结贴吧 哈哈