Member 13849947 Ответов: 1

Но у меня подробности при нажатии кнопки на пользовательский элемент управления в объекте datagridview


/*Я разрабатываю систему точечных продаж.
В моем кассовом аппарате есть 3 панели.Левая панель включает datagrid для добавления транзакционных продуктов,средняя-для отображения Категорий.Я использую пользовательские элементы управления для правой панели.И эти пользовательские элементы управления загружаются, щелкая по каждой категории.
Например,
Когда я нажимаю категорию напитков, он загружает BeverageUserControl, показывая свой продукт кнопками.(Пепси, Кока-кола ... и т. д)*/

То, что я хочу сделать, это при нажатии кнопок на пользовательском элементе управления я хочу добавить его детали записи в datagridview на форме cashrejister

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

public partial class Food : UserControl
	{
		public Food()
		{
			InitializeComponent();
		}
		static string myconn = ConfigurationManager.ConnectionStrings["connstrng"].ConnectionString;
		private void btnNasi_Click(object sender, EventArgs e)
		{
			ProductController p = new ProductController();
			SqlConnection con = new SqlConnection(myconn);
			DataTable dt = new DataTable();

			try
			{   //I think this is not practical. cz i have to write like this to every button
				string sql = "SELECT name,rate,qty FROM tbl_product WHERE name='Nasi Goreng'";
				SqlDataAdapter adt = new SqlDataAdapter(sql,con);
				con.Open();
				adt.Fill(dt);
				if (dt.Rows.Count>0)
				{
					p.name = dt.Rows[0]["name"].ToString();
					p.rate = decimal.Parse(dt.Rows[0]["rate"].ToString());
					p.qty = decimal.Parse(dt.Rows[0]["qty"].ToString());
				}

			}
			catch (Exception)
			{

				throw;
			}
			DataTable transactionDT = new DataTable();
			decimal total = p.rate * p.qty;
			transactionDT.Rows.Add(p.name, p.rate, p.qty, total);

//the datagrid is on the cashrejister form.
//I want to load transactionDT on to that datagridview.

		}
	}

1 Ответов

Рейтинг:
5

Gerry Schmitz

(Хммм, Наси Горенг. Немного креветочных чипсов и сатай, пожалуйста!)

Установите источник данных таблицы данных в существующую "пустую" коллекцию, а затем добавьте в эту коллекцию информацию о вашем заказе.

Если бы это был WPF, вы бы использовали ObservableCollection, который автоматически "ссылался" бы на сетку по мере обновления коллекции (доступ к которой можно получить из другой формы с помощью общедоступной ссылки).

В настоящее время вы пытаетесь создать "новую" таблицу данных и использовать ее для сетки данных, что вызывает несоответствие импеданса (за неимением лучшего термина).