我在我的winform應用程序中使用DevExpress,我有一個gridview,數據輸入窗體,datanavigator,都綁定到數據集。DevExpress DataBinding,添加新記錄
我要添加新的記錄,如果使用datanavigator「添加」它的工作好,如何使用「新記錄」按鈕,這樣做?
BindingSource.AddNew()
不工作,它通常不會,但其DevExpress的不工作。
我在我的winform應用程序中使用DevExpress,我有一個gridview,數據輸入窗體,datanavigator,都綁定到數據集。DevExpress DataBinding,添加新記錄
我要添加新的記錄,如果使用datanavigator「添加」它的工作好,如何使用「新記錄」按鈕,這樣做?
BindingSource.AddNew()
不工作,它通常不會,但其DevExpress的不工作。
如果你想使用綁定然後用綁定源使用你的對象..
,並使用綁定列表.AddingNew += new AddingNewEventHandler(listOfParts_AddingNew);
事件中加入新的實體對象..
查看MSDN的BindingList的例子。
void listOfParts_AddingNew(object sender, AddingNewEventArgs e)
{
e.NewObject = new Part(textBox1.Text, int.Parse(textBox2.Text));
}
的DevExpress的WinForm控件的工作這麼快有約束力的來源比較類型化數據源等..你可以實現使用這些例子bindingSources ..
集的GridView和associcated控件的數據源bindsouce你有創建... 過程的形式與這個MSDN例子..
對這個代碼片段看看..可能是你會得到一些想法從這個..
private void BindingLIstDemo_Load(object sender, EventArgs e)
{
InitializeListOfEmployees();
BindlstEmp();
listofEmp.AddingNew += new AddingNewEventHandler(listOfEmp_AddingNew);
listofEmp.ListChanged += new ListChangedEventHandler(listofEmp_ListChanged);
}
private void BindlstEmp()
{
lstEmpList.Items.Clear();
lstEmpList.DataSource = listofEmp;
lstEmpList.DisplayMember = "Name";
}
void listofEmp_ListChanged(object sender, ListChangedEventArgs e)
{
MessageBox.Show(e.ListChangedType.ToString());
//throw new NotImplementedException();
}
//declare list of employees
BindingList<Emp> listofEmp;
private void InitializeListOfEmployees()
{
//throw new NotImplementedException();
// Create the new BindingList of Employees.
listofEmp = new BindingList<Emp>();
// Allow new Employee to be added, but not removed once committed.
listofEmp.AllowNew = true;
listofEmp.AllowRemove = true;
// Raise ListChanged events when new Employees are added.
listofEmp.RaiseListChangedEvents = true;
// Do not allow Employee to be edited.
listofEmp.AllowEdit = false;
listofEmp.Add(new Emp(1, "Niranjan", 10000));
listofEmp .Add (new Emp (2,"Jai", 8000));
}
// Create a new Employee from the text in the two text boxes.
void listOfEmp_AddingNew(object sender, AddingNewEventArgs e)
{
e.NewObject = new Emp (Convert.ToInt32(txtId.Text), txtName.Text,Convert.ToInt32(txtSalary.Text));
}
private void btnAdd_Click(object sender, EventArgs e)
{
Emp empItem = listofEmp.AddNew();
txtId.Text = txtName.Text = txtSalary.Text = "";
}
private void button1_Click(object sender, EventArgs e)
{
Form1 obj = new Form1();
obj.Show();
}
private void btnDelete_Click(object sender, EventArgs e)
{
var sg = (from sc in listofEmp.ToList<Emp>() where sc.Name == ((Emp)lstEmpList.SelectedValue).Name select sc);
}
private void lstEmpList_SelectedIndexChanged(object sender, EventArgs e)
{
Emp se = listofEmp[lstEmpList.SelectedIndex];
txtId.Text = se.Id.ToString();
txtName.Text = se.Name;
txtSalary.Text = se.Salary.ToString();
}
這裏我使用BindingList
作爲datasouce BindingList<Emp> listofEmp;
和記錄網格上市地顯示在ListBox控件..但都一樣...試試這個與你的GridView ..
能否請您更具體關於什麼不起作用?我剛剛使用他們的嚮導創建了一個新的DX WinForms應用程序。我將網格綁定到一個新的數據庫表。我爲調用BindingSource.AddNew()的導航欄項添加了一個事件處理程序。點擊後,會將新行添加到網格中。 –
這是真的有線,我剛剛重新啓動電腦,現在一切工作正常。 –
理想情況下,您應該使用某種促進關注點分離的模型。像MVVM或MVC一樣。如果你這樣做,你會有一些收集 - 一個BindingList也許你已經綁定。如果你使用BindingList 那麼只需一個source.Add(new T())就夠了。 –
Neil