2011-10-25 25 views

回答

0

我不知道,如果你能,但我可能會添加一個虛擬列進行排序,給你想要更高的行值列在虛擬列中,然後使用DataView按列從大到小進行排序。

private void ModifyTable(DataTable toModify) 
    { //Add a column to sort by later. 
     DataColumn col = toModify.Columns.Add("DummySort", typeof(int)); 
     col.DefaultValue = 0; 
    } 
    private void SetDummyColumnValue(DataRow dr, int value) 
    { //Mark the columns you want to sort to bring to the top. 
     //Give values bigger than 0! 
     dr["DummySort"] = value; 
    } 
    private DataTable GetSortedTable(DataTable modifiedTable) 
    { 
     //Sort by the column from bigger to smaller 
     DataView dv = new DataView(modifiedTable); 
     dv.Sort = "DummySort DESC"; return dv.ToTable(); 
    } 
+0

我可以直接找到數據行並將其變爲索引0而無需修改表嗎? – user983738

0

你可以嘗試刪除和插入行

+0

嗨,我需要這個不刪除和插入。那可能嗎。我需要修改行狀態而不是添加和刪除 – Lance

0
DataSet dsAct = new DataSet(); 

OleDbDataAdapter odaTem = new OleDbDataAdapter("SELECT ActivityId, Activity FROM tbl_Activity", ocnConn); 

odaTem.Fill(dsAct, "Activity"); 

DataRow drTem; 

int i = 0; 

//Rows want set to be on top is in the table "TopActivity" 

foreach (DataRow dr in dsAct.Tables["TopActivity"].Rows) 

{ 

drTem = dsAct.Tables["Activity"].NewRow(); 

//Clone the row 

drTem.ItemArray = dsAct.Tables["Activity"].Rows.Find(dr["Activity_ID"]).ItemArray; 

dsAct.Tables["Activity"].Rows.RemoveAt( dsAct.Tables["Activity"].Rows.IndexOf(dsAct.Tables["Activity"].Rows.Find(dr["Activity_ID"]))); 

dsAct.Tables["Activity"].Rows.InsertAt(drTem, i); 

i++; 

} 
相關問題