在我的數據列表中,我希望創建一個分隔,將每個ItemTemplate
分隔爲新的一年,即發生不同年份。將數據列表拆分爲
MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM code_post", dbcon);
而且這個領域內,一個date
表示它的創建年份:
我用我的選擇數據。例如2011年,2010年,2009年。
當不同年份發生時,如何製作新一年的標題?
在我的數據列表中,我希望創建一個分隔,將每個ItemTemplate
分隔爲新的一年,即發生不同年份。將數據列表拆分爲
MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM code_post", dbcon);
而且這個領域內,一個date
表示它的創建年份:
我用我的選擇數據。例如2011年,2010年,2009年。
當不同年份發生時,如何製作新一年的標題?
我解決了,這是通過使一個訪問數據庫,並具有代碼,如
private String previousYear;
public string outputHeader(object y){
String year = y.ToString();
if(!previousYear.equals(year)){
previousYear = year;
return year;
}
return "";
}
和項目模板中我做的方式
<%# outputHeader(Eval("date")) %>
這允許一個行程到DB,並且比先前建議的方法更高效/更靈活
截至目前,數據處於平面層次結構,即類似於List<DataObject>
。您可以使用Linq或for-loops在Dictionary<int,List<DataObject>>
中進行設置,其中字典鍵中的每個條目都是年份值,值將是該年的Dataobject列表。與您的中繼器應該有一箇中繼器,然後將此Dictionary對象綁定到外部中繼器,並且內部中繼器數據源應該是DataItem.Value(即綁定到外部中繼器數據項的當前KeyValue對的Value部分)。
這是不是一個答案,你可以直接複製/粘貼,但我希望你有這個想法
我也曾經有過這樣的狀況的遭遇。
我做什麼...
我參加了一箇中繼器和獲取的DISTINCT
年從數據庫中。 以HiddenField
爲例,並將與<ItemTemplate>
一起保存在這裏。
<asp:HiddenField ID="hfYear" runat="server" Value='<%#Eval("year")%>' />
然後使用Repeater的ItemDataBound
,我首先關注DataList
和HiddenField
,並從HiddenField
經過一年綁定是DataList
用另一種方法。
OnitemDataBound使用
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HiddenField hf = (HiddenField)e.Item.FindControl("hfYear");
DataList dl = (DataList)e.Item.FindControl("yourDataListID");
yourDataListBindMethod(hf.Value);
}
唯一的缺點在此是有多次往返於所述數據庫(的不同的年數=旅行到數據庫數)。