Tag: datagridview

时序问题 – DGV在进程修改数据之前刷新

我在表单上有一个按钮,启动一个进程,在x(变化)秒后,更改数据库表Y中的一些数据。调用InitializeGridView()然后刷新显示前面提到的表Y的DGV。问题是那样的InitializeGridView()在进程之前完成,因此不会反映进程所做的更改。 如何让InitializeGridView等待进程完成? private void btRunProcessAndRefresh_Click(object sender, EventArgs e){ Process.Start(@”\\fileserve\department$\ReportScheduler_v3.exe”, “12”); InitializeGridView(); } 编辑 我最终得到了以下内容。 现在的问题是,如果该过程需要10分钟,那么应用程序将被冻结10分钟。 我想我需要学习如何multithreading! private void btRunReport_Click(object sender, EventArgs e){ Process p = new Process(); p.StartInfo.FileName = @”\\fileserve\department$\ReportScheduler_v3.exe”; p.StartInfo.Arguments = “12”; p.Start(); p.WaitForExit(); InitializeGridView(); }

在C#中保存并加载DataGridView内容和样式

我有一个包含许多列和行的DataGridView,用户可以右键单击一个单元格并从ContextMenuStrip中选择一个选项。 选项为红色,蓝色,绿色等颜色,如果用户选择红色,则所选单元格将其BackColor设置为红色,用户也可以在该单元格中写入值。 好吧,我的问题是,我找不到保存所有内容和样式的方法,所以如果用户重新打开for,dataGridView将有其最后的设置(包括单元格的BackColor和ForeColor)。 我试过这个来保存内容,它给了我错误,我不知道如何打开它。 private void button4_Click(object sender, EventArgs e) { SaveFileDialog svd = new SaveFileDialog(); svd.Filter = “XML Files (*.xml)|*.xml”; if(svd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DataTable dt = ((DataView)this.dataGridView1.DataSource).Table; dt.WriteXml(svd.FileName); } } 如果有更好的方法来保存内容和样式,也欢迎。 提前致谢

逐行使用dataGridView列进行数学运算,然后在textBox中显示最终值

我一直在考虑做datagridview数学的最佳方法是什么。 我有这个datagridview,我需要一行一行地将列“castka”与počet相乘,然后+下一行然后+下一行直到Im结束然后在textBox中显示最终值。因为我是初学者c#和sql我想先和你讨论这个问题。(欢迎代码:)) 非常感谢。 这就是我的桌子的样子。 有人会推荐我吗? void calculateProductTwoColumns(int castkaIndex, int pocetIndex) { double[] outVals = new double[tot_rows + 1]; //Array including product of both columns per row int curRow = 0; foreach (DataGridViewRow row in dtg_ksluzby.Rows) { curRow = curRow + 1; outVals[curRow] = (double)row.Cells[4].Value * (double)row.Cells[6].Value; // MessageBox.Show(“”+ outVals.ToString()); kpriplac.Text = outVals.ToString(); } } 这是我在form_load上调用它的方式 […]

使用DataGridView从另一个表单在TextBox中显示数据库信息

我试图将我的MySQL数据库中的信息(用户评论)显示为另一种forms的文本框。 我正在使用datagridview来选择UID以识别注释所针对的用户。 我的代码在Comment表单的load事件中,就像这样…… try { // Check if a row is selected. string cRow = admin.gridClients.CurrentRow.Cells[0].Value.ToString(); string Query = “SELECT Admin_Com FROM cpr_clients WHERE Client_ID='” + cRow + “‘;”; MySqlConnection myConn = new MySqlConnection(strConnect); MySqlCommand myCmd = new MySqlCommand(Query, myConn); MySqlDataReader myReader; myConn.Open(); myReader = myCmd.ExecuteReader(); while (myReader.Read()) { txtAdminCom.Text = myReader[“Admin_Com”].ToString(); } } catch […]

如何更新/重新加载DataGridView BindingSource?

我是C#,Windows Forms和datagridviews的新手。 我有一个标签forms:选项卡1显示练习表的数据网格视图; 选项卡2用于向表中添加新练习。 exercise表通过test_ExercisesDataSet,vwexercisesBindingSource,vw_ExercisesTableAdapter绑定到datagrid视图。 我不知道我需要做什么才能重新绑定/刷新绑定源,以便在切换回选项卡1时刷新datagridview。如果我完全关闭表单并重新启动它,我可以看到新行桌子。 我在Web和StackOverflow上看过很多例子,但我仍然不明白我做错了什么。 顺便说一下,我正在使用Visual Studio 2010。 任何帮助表示赞赏!! 谢谢! using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace testTabbedInterface { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string GetConnectionString() { return connString; } private […]

打印多个datagridview页面

我想打印我的DataGridView内容,但是当我在这个DataGridView有很多行时,我不知道如何使用HasMorePages属性。 这是我目前的代码: private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { foreach (DataGridViewRow sor in dataGridView1.Rows) { foreach (DataGridViewColumn oszlop in dataGridView1.Columns) { szelesseg += oszlop.Width; e.Graphics.DrawRectangle(Pens.Brown, szelesseg, magassag, oszlop.Width, sor.Height); szelesseg_lista.Add(szelesseg); magassag_lista.Add(magassag); } foreach (DataGridViewCell cella in sor.Cells) { ertekek.Add(cella.Value.ToString()); } szelesseg = 10; magassag = magassag + sor.Height; cella_magassag += sor.Height; } int sor_db = […]

DataGridView按列标题排序 – 使用通用列表

当我将List分配给DataGridView DataSource时,当我单击列标题时,没有任何反应,排序不起作用; 但是如果我使用DataTable作为数据源,那么当单击标题时,排序工作就很完美。 问题是:当我点击列标题时,应该使用哪种类型的集合类型来启用DataGridView排序,就像它与DataTable一起使用一样?

使用SortableBindingList – DataGridView不会自动对更改进行排序

我正在构建一个Windows窗体应用程序,它显示一个自定义类Record对象,并按照它们在我的SortableBindingList record_list SortableBindingList 。 当我启动程序时,为了测试,我已经将一些“虚拟”记录加载到此列表中。 SortableBindingList已从此处获取 。 public partial class Form1 : Form { public SortableBindingList record_list = new SortableBindingList { }; public static DataGridViewCellStyle style = new DataGridViewCellStyle(); public Form1() { InitializeComponent(); dataGridView.DataSource = record_list; FillData(); //Temporary function to insert dummy data for demo. dataGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.cell_formatting); this.Controls.Add(dataGridView); this.dataGridView.RowHeadersVisible = false; this.dataGridView.Sort(this.dataGridView.Columns[“UserName”], ListSortDirection.Ascending); […]

C#WinForms – 根据数据绑定datagridview中另一个combobox的值过滤一个combobox

我有4张桌子 – 代理商,客户,县和城镇。 代理商和客户都有Town字段和County字段。 我为每个表都有一个DataGridView。 这些都很有效。 我将Town和County作为combobox使用Towns and Counties表作为数据源。 问题是它不会根据选定的县过滤城镇。 我希望它能做到这一点,但没有选项根据另一个字段的值过滤combobox字段。 我已经搜索了一段时间,但无法找到任何有用的东西。 有谁能跟我说说怎么做,拜托? 提前致谢。 问候, 理查德 PS我使用的是Visual Studio 2010,主要是设计视图。

C#WinForms BindingList和DataGridView – 禁止编辑可以防止创建新行? 我该如何解决这个问题?

关于我使用带有BindingList的DataGridView,我是禁用编辑当前行,但允许添加新行。 我遇到的问题是,当我不允许编辑时,这似乎阻止了添加新行项,因为当您将表放入此新行的单元格时,它似乎不允许编辑??? 知道怎么解决这个问题吗? 我的代码部分如下: BindingSource bs = new BindingSource(); bList = new BindingList(); bList.AllowNew = true; bList.AllowEdit = false; // Fill bList with Customers bList.Add(new Customer(“Ted”)); bList.Add(new Customer(“Greg”)); bList.Add(new Customer(“John”)); bs.DataSource = bList; dataGridView1.DataSource = bs; 谢谢