У меня есть 2 вложенных списка ... каждый с различным источником данных ... я хочу иметь что-то вроде этого:
Февраль 2012
- 10: название статьи
- 04: название статьи
Январь 2012
- 20: название статьи
- 24: название статьи
Но теперь у меня есть
Февраль 2012
Февраль 2012
... и так далее ...
мой код примерно такой:
<asp:ListView ID="lvMonthYear" runat="server" DataSourceID="SqlDataSource1"
ItemPlaceholderID="PlaceHolder2" DataKeyNames="MnthYr"
onitemdatabound="lvMonthYear_ItemDataBound1">
<ItemTemplate>
<h1>
<asp:Label ID="lblMonthYear" runat="server" Text='<%# Eval("MnthYr") %>'/> </h1>
<asp:ListView ID="lvDayArticle" runat="server" DataKeyNames="artid" ItemPlaceholderID="PlaceHolder2" >
<ItemTemplate>
<li runat="server">
<asp:Label ID="lblDay" runat="server" Text='<%# Eval("artdate","{0:dd}") %>' />:
<asp:LinkButton ID="lblTitle" runat="server" Text='<%# Eval("title") %>' PostBackUrl='<%#Bind("artid","Articol.aspx?art={0}") %>'
CssClass="LinkButton1" />
</li>
</ItemTemplate>
<LayoutTemplate>
<ul>
<asp:PlaceHolder runat="server" ID="PlaceHolder2" />
</ul>
</LayoutTemplate>
<EmptyDataTemplate>
Nu există niciun articol.<br />
</EmptyDataTemplate>
</asp:ListView>
</ItemTemplate>
<EmptyDataTemplate>
Nu există niciun articol.<br />
</EmptyDataTemplate>
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="PlaceHolder2" />
</LayoutTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ASConnectionString %>"
SelectCommand="SELECT DISTINCT (DATENAME(MONTH, [artdate]) + ' ' + CONVERT (varchar, YEAR([artdate]))) AS [MnthYr] FROM as_Articles ORDER BY [MnthYr] DESC">
</asp:SqlDataSource>
и код позади:
protected DataSet GetArticleds(string Month, string Year)
{
DataSet articleDataSet=new DataSet();
ConnectionStringSettings cs;
cs = ConfigurationManager.ConnectionStrings["ASConnectionString"];
String connString = cs.ConnectionString;
SqlConnection dbConnection = new SqlConnection(connString);
string query = "SELECT [artid], [title], [artdate] FROM [as_Articles] WHERE DATENAME(MONTH,[artdate])=@strMonth AND CONVERT(VARCHAR,YEAR([artdate]))=@strYear ORDER BY [artdate] DESC";
SqlCommand dbCommand = new SqlCommand(query, dbConnection);
dbCommand.Parameters.Add(new SqlParameter("@strMonth", Month));
dbCommand.Parameters.Add(new SqlParameter("@strYear", Year));
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(dbCommand);
try
{
sqlDataAdapter.Fill(articleDataSet);
}
catch { }
return articleDataSet;
}
protected void lvMonthYear_ItemDataBound1(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
ListViewDataItem currentItem = (ListViewDataItem)e.Item;
DataKey currentDataKey = this.lvMonthYear.DataKeys[currentItem.DataItemIndex];
ListView lvDayArticle = (ListView)currentItem.FindControl("lvDayArticle");
string strMonthYear = Convert.ToString(currentDataKey["MnthYr"]);
string strMonth = strMonthYear.Split(' ')[0];
string strYear = strMonthYear.Split(' ')[1];
lvDayArticle.DataSource = GetArticleds(strMonth, strYear);
lvDayArticle.DataBind();
}
}