日期:2014-05-18  浏览次数:20427 次

两个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事件的时候取到值来绑定DataList2
------解决方案--------------------
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