首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

两个DataList嵌套,内层怎么获得外层动态值作为自己的参数

2012-04-07 
两个DataList嵌套,内层如何获得外层动态值作为自己的参数?假设有一个类似论坛回帖列表的实现。用到了2个Dat

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


绝对可用 结贴吧 哈哈

热点排行