private void Cource_Load(object sender, EventArgs e)
{
//fill dataset by using .GetAllCourses() function
DataSet ds = new DataAccess.newCourcesDAC().GetAllCourses();
//define and set BindingSource to tblCourses of dataset
BindingSource BS = new BindingSource();
BS.DataSource = ds;
BS.DataMember = "tblCourses";
//bind datagridview to Bindingsource
ds.Tables["tblCourses"].RowChanging += new DataRowChangeEventHandler(Cource_RowChanging);
dataGridView1.DataSource = BS;
//bind for texbox to navigat 4 column of Cource table
txtCourseID.DataBindings.Add("Text", BS, "CourseID");
txtCourseName.DataBindings.Add("Text", BS, "CourseName");
txtPrequest.DataBindings.Add("Text", BS, "Prequest");
txtCourseContent.DataBindings.Add("Text", BS, "CourseContent");
}
**void Cource_RowChanging(object sender, DataRowChangeEventArgs e)
{
if ( e.Action==DataRowAction.Add)
{
if (((int)e.Row["CourseID", DataRowVersion.Proposed]) < 10)
{
e.Row.SetColumnError("CourseID", "cource id must < 10");
e.Row.CancelEdit();
}
}
}**
私は、バインディングソースを使用して4つのテキストボックスにバインドされた4つの列を持つテーブル(tblCourse)を持つデータセット(ds)を持っています。RowChanging イベントでデータテーブルに新しいレコードを追加する際にデータを検証したい。
指定した条件が発生した場合、[e.Row.CancelEdit();]で行をキャンセルしたい。
しかし、私はこのエラーを受け取ります: OnRowChanging イベント内で CancelEdit() を呼び出すことはできません。この更新をキャンセルするには、例外をスローします。