最近項目里遇到這樣的一個小技術問題,新聞可以任意按客戶的需要進行排序,需要實現的效果圖如下:
由于各種類別輸入了蠻多測試信息,有幾百條數據,一個個把排序碼都生成也很麻煩,看能否沒有什么好辦法能生成不重復的,唯一排序碼?達到如下效果?
總不可能人工的一個個輸入吧? 也沒那個耐心的,還是想想有什么好辦法吧?
其實很快就想到了 ROW_NUMBER() 功能,用這個,應該是可行的,折騰了一小會兒,這個SQL語句就寫好了,給大家分享一下,有需要的朋友們可以直接拿過來就可以用了,雖然也沒什么難的,但是自己寫總會折騰一會兒,直接復制過去修改一下,省心省事一些。
2 SET SortCode = NEWS.SortCode
3 FROM (SELECT ROW_NUMBER() OVER (ORDER BY CreateDate DESC) + 10000000 AS SortCode
4 , Id
5 FROM BASE_NEWS) AS NEWS
6 WHERE NEWS.Id = BASE_NEWS.Id
此文雖然是過于基礎了一些,但是往往基礎的東西,大家日常生活里需要得更多,希望能對需要的人起點兒參考作用,可以COPY一下就可以用了.
若有誰可以寫得更好,也可以貼出來分享一下。
四個按鈕中的代碼實現可以參考一下
2 /// <summary>
3 /// 設置排序順序
4 /// </summary>
5 /// <param name="function">排序動作</param>
6 /// <param name="index">索引</param>
7 private void SetSort(string function, int index)
8 {
9 string id = this.gridView.DataKeys[index].Value.ToString();
10 string targetId = string.Empty;
11 try
12 {
13 this.DbHelper.Open();
14 // 判斷編輯權限
15 // this.CheckPermission(this.CategoryId, OperationCode.Edit);
16 switch (function)
17 {
18 case BaseDbSortLogic.CommandSetTop:
19 if (index > 0)
20 {
21 BaseDbSortLogic.SetTop(this.DbHelper, ProjectTable.TableName, id);
22 this.gridView.SelectedIndex = 0;
23 }
24 break;
25 case BaseDbSortLogic.CommandSetUp:
26 if (index > 0)
27 {
28 targetId = this.gridView.DataKeys[index - 1].Value.ToString();
29 this.gridView.SelectedIndex = index - 1;
30 BaseDbSortLogic.Swap(this.DbHelper, ProjectTable.TableName, id, targetId);
31 }
32 break;
33 case BaseDbSortLogic.CommandSetDown:
34 if ((index + 2) < this.gridView.Rows.Count)
35 {
36 targetId = this.gridView.DataKeys[index + 1].Value.ToString();
37 this.gridView.SelectedIndex = index + 1;
38 BaseDbSortLogic.Swap(this.DbHelper, ProjectTable.TableName, id, targetId);
39 }
40 break;
41 case BaseDbSortLogic.CommandSetBottom:
42 if ((index + 2) < this.gridView.Rows.Count)
43 {
44 BaseDbSortLogic.SetBottom(this.DbHelper, ProjectTable.TableName, id);
45 this.gridView.SelectedIndex = this.gridView.Rows.Count - 2;
46 }
47 break;
48 }
49 // 獲取列表
50 this.DoSearch();
51 }
52 catch (Exception ex)
53 {
54 this.LogException(ex);
55 throw ex;
56 }
57 finally
58 {
59 this.DbHelper.Close();
60 }
61 }
62 #endregion
關注 - 177
粉絲 - 1226
» 博主后一篇:[走火入魔失眠夜]淺談管理軟件信息安全,用戶名、密碼的加密解密【附C#配套加密解密源碼】