兩個表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天不已啊……今天突然又看了看朋友給我回的貼子,做出來了。呵呵