天天看點

DataList嵌套終于成功_07.7.25感謝csdn上的朋友

兩個表tb_newsKind,tb_article,表1存的是欄目類别kindID,kindName依次存儲的是欄目的編号和名稱,如34是新聞播報,其子欄目為35時事新聞和36整點新聞兩者的parentID都為34)。

 頁面接收傳入的一級欄目的kindID來調用它的二級欄目DataList1一行兩列的循環顯示kindName(kindID)已經實作,問題嵌套的DataList2需要根據DataList1擷取的kindID來讀取tb_article表中的新聞(tb_article中typeID為nvarchar型比如值為 |34|35|,表示該條記錄是屬于新聞播報欄目下時事新聞)以清單形式顯示在對應的欄目下如:

新聞播報(35)            時事新聞(36)

1.**                1.**

2.**                2.**

一行兩列的循環,新聞播報下面的1,2記錄根據35從tb_article表中篩選typeID like '%35%' 得到!

cs頁面中現隻綁定好了DataList1的資料源,請問DataList2該如何接收DataList1的kindID的值進行綁定??

正确代碼如下:

aspx代碼如下:  最主要的是看子DataList的DataSource事件的綁定

   <!--主DataList開始-->

            <asp:DataList ID="DataList1" runat="server"  DataKeyField = "kindId" Font-Bold="False" Font-Italic="False"

                Font-Overline="False" Font-Strikeout="False" Font-Underline="False" CellPadding="0" RepeatDirection="Horizontal" RepeatColumns="2">

                <ItemTemplate>

                <!--tb1 start--><table width="212" border="0" cellspacing="0" cellpadding="0">

          <tr>

            <td valign="top">

   <table width="212" height="200" border="0" align="center" cellpadding="0" cellspacing="0">

            <tr>

              <td height="36" valign="bottom" background="images/cunct_1_01.gif"><table width="262" height="25" border="0" align="right" cellpadding="0" cellspacing="0">

                <tr>

                  <td width="102"><div align="center" class="f">

                    <asp:Label ID="Label2" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.kindName") %>'></asp:Label>

                    </div></td>

                  <td width="101"></td>

                  <td width="59"><div align="center"><a href='<%#"more.aspx?typeid="+DataBinder.Eval(Container.DataItem,"kindId") %>' class="bb" target="_self"><img src="images/cunct_1_more.gif" width="33" height="10" border="0"></a></div></td>

                </tr>

              </table></td>

            </tr>

            <tr>

              <td height="158" valign="top" background="images/cunct_1_02.gif">

              <!--1start--><table width="270" border="0" align="center" cellpadding="0" cellspacing="0">

                <tr>

                  <td colspan="2" style="height: 10px"></td>

                </tr>

                <tr>

                    <td colspan="5" valign="top" style="padding-left:10px;">         

                <asp:DataList ID="DataList2" runat="server" CellPadding="1" CellSpacing="3" RepeatDirection="Vertical" RepeatColumns="1"   DataSource='<%# GetTitleID(DataBinder.Eval(Container.DataItem, "kindId").ToString()) %>'>

                    <ItemTemplate>

                    <table width="100%" border="0" cellspacing="0" cellpadding="0">

                        <tr>

                         <td width="16" height="20"><div align="center"><img src="images/shipin_dian.gif" width="4" height="4" /></div></td>

                         <td width="280" height="20"><a href='<%#"info.aspx?id="+DataBinder.Eval(Container.DataItem,"newID") %>' class="bb" target="_blank"><asp:Label ID="Label3" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.title") %>'></asp:Label></a></td>

                        </tr>

                    </table>

                    </ItemTemplate>

                </asp:DataList>

                   </td></tr> 

              </table><!--1end-->

              </td>

            </tr>

    <tr>

            <td height="6" background="images/shipin_z01.gif"><img src="images/cunct_1_03.gif" width="290" height="20" /></td>

          </tr>

        </table>

   </td>

          </tr>

        </table><!--tb1 end-->

                </ItemTemplate>

            </asp:DataList><!--主DataList結束--> 

cs頁面代碼如:

 public DataView GetTitleID(string kindId)

    {

        SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=db_nxt");

        SqlDataAdapter da = new SqlDataAdapter("select top 6 * from tb_article where  TypeId like '%'[email protected]+'%' ",cn);

        da.SelectCommand.Parameters.Add("@kindId", SqlDbType.VarChar, 11).Value = kindId;

        DataSet ds = new DataSet();

        cn.Open();

        da.Fill(ds);

        cn.Close();

        return ds.Tables[0].DefaultView;

    }

 Page_Load裡面不用寫這個綁定的相關調用,大功造成了。謝謝大家,這個問題拖了我3天不已啊……今天突然又看了看朋友給我回的貼子,做出來了。呵呵

繼續閱讀