1

2つのテーブルが使用可能な1つのデータセットがあります。このテーブルは、ページの読み込み中にデータベースから入力されます。今、私のシナリオを考えてみましょう。ページが読み込まれると、この2つのデータセットテーブルにデータベースのデータが入力されます。

表1:1行のプロジェクトマスター(マスターテーブル)
表2:5行のプロジェクト詳細(子テーブル-GridViewでバインド)

「プロジェクト詳細」テーブルに何もしない場合、のi値MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)はNULLです。

しかし、UIから「プロジェクトの詳細」テーブルに新しいデータ行を追加すると、新しい行が追加されたデータテーブルの値が取得MyDataset.Tables[TableName].GetChanges(DataRowState.Modified)されます。

UIでは、ユーザーがUIから新しいデータ行を追加するときに「プロジェクトの詳細」テーブルを並べ替えたいので、このようなコードを作成し、新しいデータ行が追加されるときにメソッドを作成しました。

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行のDataTableです。

実はこんな感じで欲しい

  • MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)値は「UIから新しく追加された1行」である必要があります
  • MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Added)ページ読み込みイベントでdatabseから5行を取得するため、値は「NULL」である必要があります

最後に、問題は、データセットの行の元の状態に影響を与えずに、データセットのデータテーブルを並べ替えたいということです。

4

1 に答える 1

0
you can use another dataset for new rows for UI and then sort it
after copy it in your dataset
于 2012-08-31T06:05:58.850 に答える