ページの読み込み時に fill メソッドで読み込まれる大規模なデータセットがあります。
次に、レコードをデータセットに追加できます。
これらはすべて正常に機能しますが、バインディングソースに新しいレコードを認識させる唯一の方法は、fill メソッドを実行することです。これも機能しますが、パフォーマンスの問題です。バインディング ソースがデータセット内の新しいレコードを認識しないのはなぜですか?
メインフォーム コード。よく働く。
DialogResult returnFormVal;
Schedulers.DataSets.SchedOneFetch.WOMainFetchRow newRow = schedOneFetch.WOMainFetch.NewWOMainFetchRow();
Schedulers.Forms.NewWorkOrder genReport = new Schedulers.Forms.NewWorkOrder(ref newRow);
Int32 picNumber;
returnFormVal = genReport.ShowDialog();
schedOneFetch.WOMainFetch.Rows.Add(newRow);
wOMainFetchBindingSource.EndEdit();
wOMainFetchTableAdapter.Adapter.Update(schedOneFetch.WOMainFetch);
Int32 passBackVal = newRow.DISID;
サブフォーム コード。また、素晴らしい作品。
passBackRow.DISDueDate = monthCalendar1.SelectionStart;
passBackRow.DISID = 99999999;
if (ckbEqpt.Checked == true & lbProcNum.Items.Count > 0)
{
passBackRow.DISEquip = Convert.ToInt32(lbProcNum.SelectedValue.ToString());
}
else
{
passBackRow.DISEquip = 0;
}
passBackRow.DISLineNumber = Convert.ToInt32(lbLineName.SelectedValue.ToString());
passBackRow.DISManHours = Convert.ToInt32(nudEstTotTime.Value);
passBackRow.DISNumberAss = Convert.ToInt32(nudEstTM.Value);
passBackRow.DISOpenDate = DateTime.Now;
passBackRow.DISOriginator = userID.DBUserID;
passBackRow.DISRequestor = 0;
passBackRow.DISResponsible = Convert.ToInt32(lbRespons.SelectedValue.ToString());
passBackRow.DISType = Convert.ToInt32(lbType.SelectedValue.ToString());
passBackRow.DISWorkAccomp = "";
passBackRow.DISWorkRequired = rtbWorkReq.Text;
passBackRow.MLID = 0;
passBackRow.LIID = 0;
passBackVal = 0;
this.Close();
制御をメイン フォームに戻します。新しいレコードがデータベースに追加されました。
wOMainFetchBindingSource.Position = wOMainFetchBindingSource.Find("DISID", passBackVal);
DataRowView dtaRow = (DataRowView)wOMainFetchBindingSource.Current;
String woID = dtaRow["DISID"].ToString();
不合格!bindingsource は新しいレコードを見つけられず、検索時に -1 を返し、デフォルトでデータセットの最初のレコードになります。
ダイアログとメイン ページの間に .fill メソッドを配置すると、すべて正常に動作しますが、塗りつぶしにかなりの時間がかかります... 7 ~ 8 秒。
バインディング ソースに関する私の理解は機能していないと思います。基礎となるデータセットが更新された場合、バインディング ソースがそれを見ると想定していました。
したがって、最初に誰かが塗りつぶしなしでバインディング ソースを更新する方法について提案を持っている場合、私はそれを感謝します.
ありがとう