Tag: datagridview

Windows窗体DataGridView单元中的主机TreeView

我想为DataGridView创建一个TreeView列。 我在这里通过扩展TreeView 来跟踪示例,如下所示。 public class TreeViewEditingControl : TreeView, IDataGridViewEditingControl public class TreeViewCell : DataGridViewComboBoxCell // Not sure whether this should be DataGridViewTextBoxCell 这是我的问题。 我可以在单元格中看到Treeview,但是我不知道当用户单击一个单元格时(如ComboBox扩展),如何增加Cell / TreeView的高度。 有没有人对此有任何想法?

强制绑定DataGridView生成列和行

我以编程方式创建DataGridView对象,然后使用网格的DataSource属性将其绑定到DataTable。 创建网格后,我将它添加到WinForms的控件集合中,即: Form1.Controls.Add(grid); 我想在将格式传递给Forms.Controls集合之前将格式应用于网格(即更改列标题标题等)。 问题是DataGridView的行和列在添加到表单之前不会创建。 有没有办法强制DataGridView创建行和列? 我可能设置DataGridView.Visible = false,将网格添加到窗体,格式化网格,然后设置DataGridView.Visible = true …但是,我真的需要在将其添加到窗体的控件之前完成所有格式化操作采集。 有任何想法吗?

如何从datagridview和数据库中删除选定的行

我们的想法是,删除时选择的行将从datagridview,数据库中删除,然后datagridview将被刷新。 我假设它必须用SQL完成,但是如何将类型为text的sqlcommand与该特定行的删除代码相关联? 数据库由一个表组成,数据网格绑定到该表。 删除按钮: private void btnBookRecord_Click(object sender, EventArgs e) { if (this.BooksGrid.SelectedRows.Count > 0) { foreach (DataGridViewRow dgvrCurrent in BooksGrid.SelectedRows) { if (dgvrCurrent == BooksGrid.CurrentRow) { BooksGrid.CurrentCell = null; } // Delete row code here } } }

DataGridView对象数据绑定问题“索引-1没有值”

我使用一组DataGridViews(dgv)通过属性显示类的成员。 我使用dgv,以便用户可以在视图中编辑成员的值(因此我不必显示用于编辑该值的表单或文本框)。 我正在显示的类的结构如下 Class1 (Displayed in a list view) Collection Of class2 (Displayed in a dgv, we’ll call it dgv1) Collection of class3 (Displayed in a dgv, we’ll call it dgv2) Class3存在,因为字符串集合不会在dgv中显示为字符串。 (长度显示在dgv中。 Class2和Class3具有我想在dgv中编辑的字符串属性,因此它们是dgv中显示的唯一值。 当我将class2或class3的新实例添加到它们各自的父类时,我重新绑定显示该集合的dgv。 添加类的新实例后,它出现在dgv中,但是如果我去选择值(通过在dgv中单击它)我得到一个exception,说明“索引-1没有值” 如果我将编辑的信息保存到表单然后重新打开表单,则不会出现此问题。 我之前无法编辑的值可以编辑而不会出现问题。

DataGridView最右边的列用户增加大小不起作用

我在WinForm上的DataGridView有一个奇怪的问题。 我可以通过鼠标调整所有列的大小,但对于最右边我只能收缩而不是增加大小。 有谁知道如何解决这个问题?

无法validation,但无法在DataGridView中删除

这是在我的DataGridView的RowValidation函数中: DataGridViewRow row = viewApplications.Rows[e.RowIndex]; if (row.Cells[colApplyTo.Index].Value == (object)-1) { if (MessageBox.Show(“Row #” + (e.RowIndex + 1) + ” is not assigned to a charge. Would you like to correct this? (If no, the row will be deleted)”, “Invalid Row”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { viewApplications.Rows.RemoveAt(e.RowIndex); } else { e.Cancel = true; } } 但是,有一个问题,如果用户说不,意味着他或她没有纠正这一行,我不能像我尝试那样删除它。 […]

DataGridView删除行仅删除备用行

我在DataGridView中有100行。 然后我删除每一行,如下所示,但因为它围绕ID循环进入0,2,4,6,8,因此它只删除偶数行。 这是怎么回事? foreach (DataGridViewRow row in dgvData.Rows) { try { if (row.IsNewRow) continue; string PalletID = row.Cells[1].Value.ToString(); string Location = row.Cells[2].Value.ToString(); dgvData.Rows.Remove(row); AddToList(PalletID + ” located in ” + Location + ” was uploaded”); } catch (Exception ex) { MessageBox.Show(“Error Uploading Data”); AddToList(“Error uploading data ” + ex.Message); continue; } }

.NET Windows窗体DataGridView以编程方式添加时,单元格文本消失

我正在开发一个包含DataGridView的Windows窗体应用程序。 这个DataGridView有3列,所有列都只是文本单元格: Timestamp Connection Message 我遇到的问题是,当我添加一行(以编程方式)时,我发现如果文本太长,文本就会消失。 具体来说,如果文本长度超过4563个字符,则文本消失。 我知道DataGridViewTextBoxColumn类有一个属性调用MaxInputLength ,它可以限制输入的字符数。 但根据文档 ,它只影响用户手动输入的文本。 但是,我正在以编程方式输入此文本。 但是为了确保,我将此属性设置得非常高,但是当我通过4563字符限制时,仍会出现消失的文本问题。 我注意到的一件事是文本仍然存在(即底部的滚动条仍然可以滚动,就好像文本仍在那里)但我看不到文本本身。 我也可以编辑文本。 我可以添加字符直到4563限制,但是一旦我通过它,文本就会消失。 如果按退格键返回正好4563个字符, 则会再次出现该文本。 我正在使用.NET 4.0进行开发,因为我必须支持Windows XP。

如何使用c#在datagridview中动态添加列

如何使用c#在datagridview中动态添加列

编辑模式下DatagridView中的ComboBox

我有一个DataGridView,只读模式设置为true(不可编辑),它从表单加载数据库获取值。 当我将只读模式设置为false(可编辑模式)时,我希望特定列(例如,Department)可以作为ComboBox显示,因此我可以从那里选择值。 当我进入只读模式时,ComboBox应该消失,DataGridView应该正常可见。 怎么实现呢? 我正在使用C#framework 4.0,Winforms