Я пишу интерфейс только для чтения для базы данных и не могу найти способ синхронизировать данные. Я могу запросить базу данных и поместить результаты в DataTable, а затем присоединить их к DataSet и использовать в качестве DataSource для DataGridView. Я борюсь с обновлением строк в DataTable / DataSet, а изменения отражаются в DataGridView.
DataTable orders = new DataTable();
DataTable lines = new DataTable();
DataSet dataSet = new DataSet();
private string orderQuery = "SELECT oh_ord_no AS OrderID, oh_stat AS OrderStatus, oh_cu_no AS CustomerID, cus_name AS CustomerName, cus_price_no AS PriceBand, cus_ac_manager AS AccountManager, oh_ord_type AS OrderType, oh_ord_ref AS OrderReference, oh_del_meth AS DeliveryMethod, oh_op_no AS InputBy, oh_route_no AS Route, CAST(SQL_DATE,DATEADD(day,-1,oh_ord_date)) AS OrderDate, CAST(SQL_DATE,DATEADD(day,-1,oh_del_date)) AS DeliveryDate, oh_head_text AS HeaderText, oh_foot_text AS FooterText, oh_total_units AS TotalUnits, oh_ord_value AS OrderValue, CAST(SQL_DATE,DATEADD(day,oh_status_change_date,'1899-12-31')) AS StatusChangeDate, oh_status_change_time AS StatusChangeTime, oh_conf_no FROM admin.sffoh1 LEFT JOIN admin.sdfcus ON oh_cu_no = cus_no";
private string orderLines = "SELECT ilf_ord_no AS OrderID, ilf_prod_ptr AS ProductID FROM admin.sffilf";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
orders = SwordsData.GetData(orderQuery, "orders");
orders.AcceptChanges();
lines = SwordsData.GetData(orderLines, "lines");
dataSet.Tables.Add(orders);
dataSet.Tables.Add(lines);
dataview.DataSource = dataSet;
dataview.DataMember = "orders";
}
private void timer1_Tick(object sender, EventArgs e)
{
orders.Reset();
orders = SwordsData.GetData(orderQuery, "orders");
lines = SwordsData.GetData(orderLines, "lines");
dataSet.GetChanges();
}
Это то, что у меня есть до сих пор. Я просто не могу найти в Интернете ничего, что могло бы мне помочь :(
Мы будем очень благодарны за любую помощь или совет. Ли.
Отбросьте DataSet
и используйте BindingSources
в качестве источника данных для DGV. Подключите BindingSource
к вашему DataTable
, и тогда изменения будут автоматически обновлены в вашем DGV.
@GuidoG Это сработало, большое спасибо.
Почему ты хочешь это сделать? Это действительно путь зла. Запросить базу данных напрямую.