2012-08-31 63 views
1

我有一個數據集,其中有2個表available.This表是從DATABSE在加載頁面填寫。 現在考慮我的情況。 頁面加載時,數據集的這兩個表格將填充來自數據庫的數據。不改變原有的RowState排序在數據集的DataTable

表1:項目總體具有1點的行(主表)
表2:項目詳細的5行(子表 - 在GridView控件綁定)

如果我什麼都不做,以「項目詳細信息」表中,然後我的值MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)是NULL。

但是,如果我從UI添加新的數據行到「項目詳細信息」表中,我將得到值爲MyDataset.Tables[TableName].GetChanges(DataRowState.Modified)是添加新行的數據表。

在UI,我想,當用戶從UI.So添加新的數據行,我沒有這樣的代碼和創建方法時,增加了新的數據行被排序的「項目詳細信息」表中。

private void SortProjectDetailTable(ref DataSet ds) 
{ 
    DataView dv = new DataView(ds.Tables["ProjectDetailTable"]); 
    DataTable dtTemp = new DataTable("ProjectDetailTable"); 
    dv.Sort = " DATE DESC "; 
    dtTemp = dv.ToTable().Copy(); 

    if (ds.Tables.Contains("ProjectDetailTable")) 
     ds.Tables.Remove("ProjectDetailTable"); 

    ds.Tables.Add(dtTemp); 
} 

此方法完美地對數據表進行排序。但是,當我試圖讓的「MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)」的值,我得到它NULL而「MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Added)」值數據表6行。

其實我希望它這樣

  • MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)值應爲「從UI 1新添加的​​行」
  • MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Added)值應爲「空」,因爲我得到了頁面加載事件
  • 從DATABSE 5行

最後,問題是,我要排序的數據集DataTable中而不影響數據集行的原始狀態。

回答

0
you can use another dataset for new rows for UI and then sort it 
after copy it in your dataset 
+0

我想對我從數據庫和UI獲得的所有表格行進行排序。 – ravidev