kmuthu1212 Ответов: 2

Как передать значения datagridview из формы 1 в форму 2 В C#


Once i Click the payment button and then open the form like popup, and then how to pass datagridview and invoice number values from that popup to insert into database using c#. Please give me someone for proper solution


Что я уже пробовал:

else
           {
               SalesPay popup = new SalesPay();
               popup.NetTotal = netPrice.Text;
               popup.Netgst = gstPrice.Text;
               this.dataGridColumns();
               DialogResult dialogResult = popup.ShowDialog();
            }
           }


      private void dataGridColumns()
       {
           for (int i = 0; i <= metroGrid1.Rows.Count - 1; i++)
           {
               string prodName = metroGrid1.Rows[i].Cells[0].Value.ToString();
               string prodRetailPrice = metroGrid1.Rows[i].Cells[1].Value.ToString();
               string prodQuantity = metroGrid1.Rows[i].Cells[2].Value.ToString();
               string prodTotalPrice = metroGrid1.Rows[i].Cells[3].Value.ToString();

           }
       }

Graeme_Grant

Пожалуйста,не перепечатывайте вопросы. Вместо этого обновите исходный вопрос. На первоначальный вопрос уже есть ответы: Как передать значения datagridview из одной формы 1 в форму 2 для вставки базы данных[^]

2 Ответов

Рейтинг:
1

RickZeeland

Вот решение с использованием статического Класс bindinglist, Программный код:

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace TestForm1
{
    static class Program
    {
        public static BindingList<MyClass> masterBindingList;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //// Test data grid with BindingList.
            Application.Run(new Form1());
        }

        /// <summary>
        /// Simple class with one string.
        /// </summary>
        public class MyClass
        {
            public string Title { get; set; }
        }
    }
}

Кода form1 :
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace TestForm1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Init();
        }

        private void Init()
        {
            Program.masterBindingList = new BindingList<Program.MyClass>();
            this.dataGridViewMaster.DataSource = Program.masterBindingList;
        }

        private void ButtonAddRowClick(object sender, EventArgs e)
        {
            var rowIndex = this.dataGridViewMaster.RowCount;
            this.AddRow(rowIndex);
            this.ScrollToRow(rowIndex);
        }

        /// <summary>
        /// Add new row via the BindingList.
        /// </summary>
        private void AddRow(int rowIndex)
        {
            var myRow = new Program.MyClass { Title = "Row " + rowIndex.ToString() };
            Program.masterBindingList.Add(myRow);
        }

        private void ScrollToRow(int rowIndex)
        {
            this.dataGridViewMaster.ClearSelection();
            this.dataGridViewMaster.FirstDisplayedScrollingRowIndex = rowIndex;
            this.dataGridViewMaster.Focus();
        }
    }
}

Вы можете установить свой Form2 в общий список Привязок следующим образом:
private void buttonShow_Click(object sender, EventArgs e)
{
    var form2 = new Form2();
    // form2.dataGridView1 Modifiers set to public in Designer.
    form2.dataGridView1.DataSource = Program.masterBindingList;
    form2.ShowDialog();
}
Конечно, вы также можете установить источник данных в Form2 после InitializeComponent().


Рейтинг:
0

OriginalGriff

Точно так же вы поступаете с OpenFileDialog или чем-то подобным: вы создаете свойства во всплывающем окне, к которым "родительская" форма обращается через всплывающее окно из экземпляра, когда всплывающее окно закрывается.
Поскольку вы используете ShowDialog," Родительский " код замерзнет на этой строке, а затем продолжит работу со следующей строкой кода, когда пользователь закроет всплывающее окно.