Tag: datagridview

C#DataGridView检查是否为空

我有一个datagridview,它填充了linq查询返回的数据。 如果查询没有返回结果,我想显示一个消息框。 有没有办法检查datagridview是否为空? 问候

获取DataGridView CurrentCellChanged事件中的当前单元格列索引

我有DataGridView的CurrentCellChanged事件处理程序,我希望能够从事件处理程序访问当前选定的单元格列索引。 我以前在CellClick处理程序中有代码,其中DataGridViewCellEventArgs作为参数,所以我能够从事件args参数中获取列索引,但是CurrentCellChanged事件将EventArgs作为参数,我相信这应该暗示没有数据为这个事件。 有没有办法访问新的当前选定的单元格列索引?

比较DataGridView单元格中的旧值和新值

如何根据新单元格值是>还是<比当前/旧单元格值更改DataGridView单元格ForeColor? 是否有一个事件在更改电流之前传递新值,所以我可以比较它们? 数据从底层源更新,可能受BindingSource约束。

用户更改单元格值时要捕获的DataGridView事件

我有一个用C#编写的Winforms应用程序。 在我的一个DataGridViews中,我设置了所有列,除了一个名为’Reference’的列,ReadOnly = true; 我希望应用程序知道用户何时更改了“参考”列中的任何内容,但到目前为止我尝试过的所有事件都比用户进行更改时要多得多。 例如,CurrentCellChanged在最初呈现DataGridView时触发,并且每次用户只需单击行或标记行等。 我只对在’Reference’列中捕获用户对数据的更改感兴趣,该列是ReadOnly = false的唯一列; 哪个是最好的事件?

DataGridView在开头没有选定的行

在我的WinForms中,我有DataGridView 。 我想一次选择完整行,所以我将SelectionMode设置为FullRowSelect 。 现在我有问题,因为在开始时我的表单为第一行加下划线(所选行的集合为空,第一行未选中但仅加下划线)。 我尝试了很多东西,比如: private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { dataGridView1.ClearSelection(); } 一切都失败了,因为事实上没有选择。 我该怎样摆脱这个下划线? 谢谢你的帮助!

在DataGridView中排列列

我有一个由存储过程填充的datagridview 。 通常我会使用“编辑列”对话框对列重新排序,但此datagridview用于显示来自不同来源的数据,因此我无法做到这一点。 我已经想出如何重命名Headers并使某些列为Frozen但是如何更改它们的显示顺序?

数据源不反映DataGridView中的排序

我将DataTable绑定为DataGridView的DataSource 。 我为所有DataGridViewColumn启用了SortMode属性为Automatic 。 但是当我在DataGridView上进行排序时,排序更改没有反映在基础DataSource中,即DataTable。 例如: DataTable table = new DataTable(); table.Columns.Add(“Name”); table.Columns.Add(“Age”, typeof(int)); table.Rows.Add(“Alex”, 27); table.Rows.Add(“Jack”, 65); table.Rows.Add(“Bill”, 22); dataGridView1.DataSource = table; 现在,如果我要获得如下所示的选定行,它将始终返回DataTable中0 Index处的行, 即使在排序后是Alex, 27 。 DataRow newRow = table.NewRow(); newRow.ItemArray = table.Rows[dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0])].ItemArray.Clone() as object[]; 有人可以建议我应该如何处理这种情况?

DataGridView.Datasource = null; 错误:对象引用未设置为对象的实例

我很困惑为什么将datagridview控件的数据源设置为null,会导致“对象引用未设置为对象的实例”错误。 提前致谢 while (xmlReader.Read()) { if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == “deposits”)) { oDeposit.DepAmt = Convert.ToDouble(xmlReader.GetAttribute(“depamount”)); oDeposit.DepDate = Convert.ToDateTime(xmlReader.GetAttribute(“depdate”)); oDeposit.DepositId = Convert.ToInt32(xmlReader.GetAttribute(“depid”)); oCustomer.addDeposits(oDeposit); **dgvDeposits.DataSource = null;** dgvDeposits.DataSource = oCustomer.Deposits; } }

在绑定的DataGridView中将DataGridViewColumn更改为DataGridViewComboBoxColumn

我有一个绑定到DataTable的DataGridView,我使用SQLiteDataAdapter来更新一个SQLite数据库。 我正在尝试将其中一个列设为DataGridViewComboBoxColumn,但尽管我可以在其上放置项并更改其单元格值,但我无法通过DataAdapter更新它。 加载DataGridView后我正在这样做: DataGridViewComboBoxColumn cbCol = new DataGridViewComboBoxColumn(); dataGridView1.Columns.Insert(2, cbCol); dataGridView1.Columns[2].HeaderText = dataGridView1.Columns[3].HeaderText; dataGridView1.Columns[3].Visible = false; string[] cbList = new[] {“item1″,”item2”}; foreach (string str in cbList) { cbCol.Items.Add(str); } for (int i = 0 ; i<= dataGridView1.Rows.Count – 1; i++) { dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[3].Value; } 问题是ComboBoxColumn没有绑定到DataTable,我必须在运行DataAdapter.Update之前检查更改并修改隐藏列。 有什么方法可以避免这种情况吗? 完美的场景将是这样的: private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e) { […]

将数据从datagridview插入数据库

数据库中有一些现有数据,用户将新数据输入datagridview,我想将其添加到数据库中。 我真的不知道如何将datagridview中新插入的数据行添加到数据库中。 如何仅获取新插入的数据? 我被告知我可以使用tempID将它分配给新插入的行,但我不知道如何做到这一点。 任何人都可以给我一些链接吗? 这是我现在的代码: private void button1_Click(object sender, EventArgs e) { con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = “Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True”; con.Open(); SqlDataAdapter da = new SqlDataAdapter(); for (int i = 0; i<dataGridView1.Rows.Count-2; i++ ) { String insertData = "INSERT INTO CostList(SupplierName, CostPrice, PartsID) VALUES (@SupplierName, @CostPrice, @PartsID)" ; SqlCommand cmd = new […]