DevExpress DataBinding, Добавить новую запись - PullRequest
1 голос
/ 18 ноября 2011

Я использую DevExpress в своем приложении winform, у меня есть сетка, форма ввода данных, datanavigator, все привязаны к набору данных.

Я хочу добавить новую запись, если использую datanavigator " Add"это работает хорошо, как сделать то же самое, используя кнопку" Новая запись"?

BindingSource.AddNew() 

не работает, обычно работает, но с devexpress не работает.

1 Ответ

3 голосов
/ 18 ноября 2011

Если вы хотите использовать привязку, тогда используйте ваши объекты с источником привязки ..

и используйте список привязок .AddingNew += new AddingNewEventHandler(listOfParts_AddingNew); событие для добавления нового объекта сущности ..

См. Пример BindingList на MSDN .

void listOfParts_AddingNew(object sender, AddingNewEventArgs e)
        {
            e.NewObject = new Part(textBox1.Text, int.Parse(textBox2.Text));

        }

DevExpress WinForm Controls работает так быстро с источниками привязки, как по сравнению с типизированными источниками данных и т. Д. Вы можете реализовать bindingSources, используя этот пример.

установить gridview и связанный источник данных управления для привязки, которую вы создали ... обработайте вашу форму с этим примером 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 в качестве источника данных BindingList<Emp> listofEmp; и на месте таблицы списка записей отображаются в элементе управления списком ... но все то же самое ... попробуйте это с вашим gridview ..

...