2011-08-12 10 views
0

私は何をする必要があるか説明しようとしています。一時データテーブルを反復処理した後に元のdatarowに値を割り当てる方法

2番目のforeachでわかるように、一時データテーブルを繰り返し処理していますが、元のデータタブラウで同じ行の値を設定する必要があります。 例: _uc090_WingsIntegrationDataSet.WingsBookingInterface [0] ["property"] = x;

実装方法はわかりませんが、その行を見つけてプロパティを設定する方法ですが、私はLoadRowメソッドを見たことがあります。

  DataTable tempTable = _uc090_WingsIntegrationDataSet.WingsBookingInterface.Clone(); 

      DataRow[] datarows = _uc090_WingsIntegrationDataSet.WingsBookingInterface.Select("REFMDossierID = " + refmDossierId); 

      if (datarows.Length > 0) 
      { 
       foreach (DataRow dr in datarows) 
       { 
        tempTable.ImportRow(dr); 
       } 
      } 


      //2.  foreach master row 
      foreach (UC090_WingsIntegrationDataSet.WingsBookingInterfaceRow row in tempTable.Rows) 

答えて

2

あなたはRows.Find()を使用して行を見つけることができますが、それは主キーがあなたのDataTableに少なくとも1つの列に設定されている必要があります。

新しいデータをロードする場合は、LoadDataRow()を使用して既存の行(プライマリキーが指定されている場合)を更新するか、一致するデータ型が見つかると新しいデータを挿入します。

型指定されていないデータセットを使用して、次の例を見てみてください。

DataSet dataSet = new DataSet("MyDataSet"); 
DataTable dataTable = dataSet.Tables.Add("JavaScriptLibraries"); 

DataColumn[] dataColumns = 
    new[] { 
     new DataColumn("Id", typeof(Int32)) 
      { 
       AutoIncrement = true, 
       AllowDBNull = false, 
       AutoIncrementSeed = 1 
      }, 
     new DataColumn("Name", typeof(String)) 
    }; 
dataTable.Columns.AddRange(dataColumns); 
dataTable.PrimaryKey = new[] { dataTable.Columns["Id"] }; 

DataRow dataRow1 = dataTable.NewRow(); 
dataRow1["Name"] = "jQuery"; 
dataTable.Rows.Add(dataRow1); 

DataRow dataRow2 = dataTable.NewRow(); 
dataRow2["Name"] = "MooTools"; 
dataTable.Rows.Add(dataRow2); 

// Copy the dataset 
DataSet tempDataSet = dataSet.Clone(); 
DataTable tempDataTable = tempDataSet.Tables["JavaScriptLibraries"]; 
DataRow[] tempRows = dataSet.Tables["JavaScriptLibraries"].Select("Name = 'jQuery'"); 

// Import rows to copy of table 
foreach (var tempRow in tempRows) 
{ 
    tempDataTable.ImportRow(tempRow); 
} 

foreach (DataRow tempRow in tempDataTable.Rows) 
{ 
    // Find existing row by PK, then update it 
    DataRow originalRow = dataTable.Rows.Find(tempRow["Id"]); 
    originalRow["Name"] = "Updated Name"; 
} 

// Load new data using LoadDataRow() 
object[] newRow = new[] { null, "New Row" }; 
dataTable.BeginLoadData(); 
dataTable.LoadDataRow(newRow, true); 
dataTable.EndLoadData(); 
関連する問題