读书人

两个DataList嵌套,内层怎么获得外层动

发布时间: 2012-04-07 17:31:50 作者: rapoo

两个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>


绝对可用 结贴吧 哈哈

读书人网 >asp.net

热点推荐