2012-07-25 46 views
0

我試圖通過日期獲取blogpost以構建存檔,更具體地說,我希望數據按年份的月份呈現,例如, 2012年7月,2012年8月等。哦,考慮我是一個新手。按特定日期獲取數據以在ListView中呈現

數據由呈現標籤中的日期的ListView檢索,然後將標籤文本(例如Juni,2012)轉發給我正在努力處理的代碼隱藏中的新SP。我試圖檢查與我的日期字段與LIKE子句的參數,但不知何故,我得到兩個六月七月當我嘗試與參數「juli」的SP。它與數據類型有點混淆,我不知道在這種情況下使用什麼。

SP: 我已經離開參數數據類型的長度,它給我任何數據,如果長度定義,應該是10。我也試圖從表中將日期時間轉換爲有點類似的字符串@Date我有點迷失在這裏,不熟悉LIKE子句,所以請考慮我在這個新手。

@Date varchar 
AS 
BEGIN 
    SELECT A.ArticleID, A.Name, A.Header, A.Article, A.Date, 
    C.Category, C.CategoryID, 
    M.FirstName + ' ' + M.LastName as 'Author', A.ArticleLevel 
    FROM Article as A 
     LEFT JOIN Category as C on A.CategoryID = C.CategoryID 
     LEFT JOIN Member as M ON A.MemberID = M.MemberID    
    WHERE CONVERT(VARCHAR(4), a.Date, 100) + CONVERT(VARCHAR(4), a.Date, 120) LIKE @Date + '%' 
    ORDER BY A.Date, A.ArticleLevel Asc 
END 

exec [usp_GetArticlesForArticleDates] 'juli' 

C#: 的 「ArchiveArticlesListView」 是嵌套的ListView控件呈現爲特定日期的文章。

protected void ArchiveListView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     var articleId = (int)ArchiveListView.DataKeys[e.Item.DataItemIndex].Value; 
     //var dateParam = (int)ArchiveListView.DataKeys[e.Item.DataItemIndex].Value; // Tried to use the DataKey for Date and convert it to char, but that only left me with values like "309 j" 

     var DateLabel = e.Item.FindControl("DateLabel") as Label; 
     var date = DateLabel.Text; 
     var articlesLV = e.Item.FindControl("ArchiveArticlesListView") as ListView; 
     articlesLV.DataSource = Service.GetArticleArchive(date); 
     articlesLV.DataBind(); 
    } 
} 

回答

0

試試下面的,如果你想兩個日期之間獲取數據:

@Date datetime 
@year datetime 
AS 
BEGIN 
SELECT A.ArticleID, A.Name, A.Header, A.Article, A.Date, 
C.Category, C.CategoryID, 
M.FirstName + ' ' + M.LastName as 'Author', A.ArticleLevel 
FROM Article as A 
LEFT JOIN Category as C on A.CategoryID = C.CategoryID 
LEFT JOIN Member as M ON A.MemberID = M.MemberID    
WHERE CONVERT(VARCHAR(4), a.Date, 100) + CONVERT(VARCHAR(4), a.Date, 120) =CONVERT(VARCHAR(4), @Date , 100) + CONVERT(VARCHAR(4), @year, 120)' 
ORDER BY A.Date, A.ArticleLevel Asc 
END 
exec [usp_GetArticlesForArticleDates] 'juli','2012'' 

我認爲這會爲你工作。