none
DataTable 該如何排序呢?? RRS feed

  • 問題

  •  

    小弟手動於DataSet中建立一個DataTable,然後在存入資料,最後在將這個table傳入給crystalreport作列印的工作。

     

    這個datatable新增資料後,該如何指定某一個蘭未來進行排序呢??

    2008年1月18日 上午 02:12

解答

  • For Example

    DataTable dt = new DataTable();
    dt.Columns.Add("Column_1", typeof (string));
    dt.Columns.Add("Column_2", typeof (string));
    dt.Columns.Add("Column_3", typeof (string));
     
    dt.Rows.Add("1", "二", "C");
    dt.Rows.Add("2", "三", "A");
    dt.Rows.Add("3", "一", "B");
     
    dt.DefaultView.Sort = "Column_1 DESC";
     
    dataGridView1.DataSource = dt;

    2008年1月18日 上午 02:24

所有回覆

  • For Example

    DataTable dt = new DataTable();
    dt.Columns.Add("Column_1", typeof (string));
    dt.Columns.Add("Column_2", typeof (string));
    dt.Columns.Add("Column_3", typeof (string));
     
    dt.Rows.Add("1", "二", "C");
    dt.Rows.Add("2", "三", "A");
    dt.Rows.Add("3", "一", "B");
     
    dt.DefaultView.Sort = "Column_1 DESC";
     
    dataGridView1.DataSource = dt;

    2008年1月18日 上午 02:24
  • 您好,我在datatable增加資料後,執行了

    this.dsRPT.RPT2.DefaultView.Sort = "AG DESC";

     

    然後再把datatable塞給crystalreport,但是列印出來的結果還是沒有排序??

    cpt.rptDoc.SetDataSource(this.dsRPT);

     

     

    不知哪邊錯了??請前輩指教!

     

    ---------------------------------------------------------------------------------------------------------

     

    多謝前輩指教,排序方式是ok的!

    原來在crystalreport排序是要在報表中設定的!多謝前輩指教!

    2008年1月18日 上午 02:48
  • 您必須先將原來的 DataTable 的 DataView 抓出來
    再對 DataView 排序
    接著 New 新的 DataTable=原來DataTable.Clone() 複製結構
    再來 For 迴圈將排序好的 DataView 一筆一筆塞進新 DataTable

    Dim TmpDataView As New DataView(tmpDataset.Tables(0))
    TmpDataView.Sort = "GetDocumentKey ASC"
    Dim TmpTable02 As New DataTable
    TmpTable02 = tmpDataset.Tables(0).Clone()
    Dim TmpRow02 As DataRow
    Dim TmpDataSet02 As New DataSet

    For i As Integer = 0 To TmpDataView.Count - 1
      TmpRow02 = TmpTable02.NewRow()
      TmpRow02.Item("GetTitle") = TmpDataView(i)("GetTitle")
      ...........
      TmpTable02.Rows.Add(TmpRow02)
    Next
    TmpDataSet02.Tables.Add(TmpTable02.Copy())

    最後結果TmpDataSet02就是新的已經排序好的東西,可以用了




    2012年10月16日 上午 09:25
  • cpt.rptDoc.SetDataSource(this.dsRPT.RPT2.DefaultView.ToTable());

    是的,Report中您可設定Sort


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月16日 上午 10:10
  • dt.DefaultView.sort = "AG DESC";

    dt = dt.DefaultView.ToTable(); //將排序好的 DefaultView 產出新的DataTable 或是複寫回去。

    http://msdn.microsoft.com/zh-tw/library/a8ycds2f(v=vs.110).aspx


    2014年12月3日 上午 04:56