Tag: datagridview

DataGridView行的背景颜色没有变化

我想根据加载时的特定条件更改DGV行的背景颜色,即使在Windows窗体中也是如此。 但我看不到任何DGV行的颜色变化。 谁能告诉我怎样才能解决这个问题? private void frmSecondaryPumps_Load(object sender, EventArgs e) { try { DataTable dt = DeviceData.BindData(“SECONDARY_PUMPS”.ToUpper()); dataGridView1.DataSource = dt; foreach (DataGridViewRow row in dataGridView1.Rows) { foreach (DataGridViewColumn column in dataGridView1.Columns) { if (row.Cells[column.Name] != null) { if (row.Cells[column.Name].Value.ToString() == “ON”) row.DefaultCellStyle.BackColor = System.Drawing.Color.Green; if (row.Cells[column.Name].Value.ToString() == “OFF”) row.DefaultCellStyle.BackColor = System.Drawing.Color.Red; } } } dataGridView1.Refresh(); } […]

将DataSource设置为Datagridview后添加一行

我有很多与datagrid的数据源绑定有关的问题。 我有一个DatagridView,我从列表中设置DataSource List li = new List(); MyClass O = new MyClass(); O.Name = “Aden”; O.LastName = “B”; O.Id = 12; li.Add(O); O = new MyClass(); O.Name = “Li”; O.LastName = “S”; O.Id = 22; li.Add(O); Mydgv.DataSource = li; MyClass的地方 public Class MyClass { public string Name {get; set;} public string LastName {get; set;} public […]

无法允许用户使用List Datasource将行添加到DataGridView

我将DataGridView绑定到List作为DataSource 。 但是当我将“ AllowUserToAddRows ”属性设置为“True”时,没有任何内容出现。 我试图将DataSource更改为BindingList ,并且进展顺利。 我想知道我是否应该用BindingList替换我的List BindingList或者有更好的解决方案。

DataGridView:将完成复制到剪贴板

我在.Net应用程序(V4 C#VS2010)中有一个DataGridView,并希望通过单击按钮将所有数据复制到剪贴板。 没问题 – private void copyToClipboard() { dataGridView1.SelectAll(); DataObject dataObj = dataGridView1.GetClipboardContent(); if (dataObj != null) Clipboard.SetDataObject(dataObj); } 问题是用户可能已经在DataGrid上选择了一些单元格,行等,我真的不想更改该选择。 以上显然选择了一切。 我可以dataGridView1.ClearSelection(); 在最后,稍微好一点,但仍然没有达到要求。 我可以保存选定的单元格: var mySelectedCells = dataGridView1.SelectedCells; 但是如何在复制后在DataGrid上重新选择那些选定的单元? 有没有一种简单的方法可以将选定的单元格集合重新放回DataGrid? 也许有一种更好的方法可以将整个网格首先复制到剪贴板而不影响当前选定的单元格?

C#DataGridViewComboBoxColumn绑定问题

嘿大家! 我想这是我在StackOverFlow.com上的第一篇文章:-) 我一直有这个问题。 为了简单起见,假设我们有2个名为“books”和“categories”的数据库表,其中包含以下模式: 书籍(id,title,catId) 类别(id,catName) 显然, “ 书籍”表中的“catId”字段是外键,并指定书籍所属的类别。 我已经创建了必要的LinQ to Sql类并创建了必要的bindingSource对象。 我想要做的是显示DataGridView对象中的所有书籍。 我希望它有一个名为“Category”的列,其类型为DataGridViewComboBoxColumn,包含所有现有类别,并且每本书都显示特定书所属的类别。 用户可以通过在combobox中选择另一个类别来重新分配图书的类别。 我已经成功完成了我想要的ComboBox ,它可以正常工作。 但是当谈到DataGridView时,我无法理解它。 任何帮助将不胜感激我已经花了几天时间想出办法但到目前为止没有运气:-(

使用.NET中的linq计算dataGridView中列的不同值

我需要在dataGridView中计算并显示不同/唯一的值。 我想像这样呈现它,这个代码适用于列表。 List aryIDs = new List(); aryIDs.Add(“1234”); aryIDs.Add(“4321”); aryIDs.Add(“3214”); aryIDs.Add(“1234”); aryIDs.Add(“4321”); aryIDs.Add(“1234”); var result= aryIDs.GroupBy(id => id).OrderByDescending(id => id.Count()).Select(g => new { Id = g.Key, Count = g.Count() }); 但是,当我尝试在dataGridView中的列上使用相同的方法时,我得到一个错误,指出groupBy不能在我的dataGridView上使用。 DataGridView dataGridView1= new DataGridView(); dataGridView1.Columns.Add(“nr”, “nr”); string[] row1 = new string[] { “1234” }; string[] row2 = new string[] { “4321” }; string[] row3 […]

过滤通用列表的最简单方法

我有以下类在我的表中定义一个条目(我删除了brewity的构造函数,它简单地设置了该数据): class FilterResult { public bool Checked { get; set; } public string Url { get; private set;} public string Description { get; private set; } public int ItemID { get; private set; } } 我使用它作为WinForms应用程序中的DataGridView的简单源,使用GUI中的“选择数据源”创建,这导致自动创建的类名为filterResultBindingSource 。 现在,这种方法不支持DataGridView.Filter属性,我需要能够对结果进行简单的过滤。 我怎样才能以最快/最简单的方式创建自定义列表,绑定源或第三个以支持过滤? 从我所看到的,实现IBindingListView或新的BindingSource有很多工作,但如果我错了,请纠正我。 它不一定要使用Filter属性,事实上如果我可以实现一个自定义方法可能会更容易,我可以使用列表中的Where -method进行过滤。

更改DataGridView标题单元格的文本对齐方式和字体大小

我正在尝试更改文本对齐方式和DataGridView的字体大小。 所有列都是在运行时以编程方式创建的。 这是代码.. private void LoadData() { dgvBreakDowns.ColumnCount = 5; dgvBreakDowns.Columns[0].Name = “Breakdown No”; dgvBreakDowns.Columns[1].Name = “Breakdown Type”; dgvBreakDowns.Columns[2].Name = “Machine Type”; dgvBreakDowns.Columns[3].Name = “Date”; dgvBreakDowns.Columns[4].Name = “Completed”; dgvBreakDowns.Columns[4].Visible = false; foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows) { header.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; header.Style.Font = new Font(“Arial”, 12F, FontStyle.Bold, GraphicsUnit.Pixel); } } 在Form的构造函数中调用此LoadData()方法。 列已创建,但其标题更改不适用。 我认为这是因为我的循环foreach (DataGridViewHeaderCell header in […]

当鼠标位于数据网格中时,显示数据网格行中每个项目的工具提示

当您将鼠标hover在该特定行中的项目上时,如何为datagridview中的每个项目显示datagridview的工具提示? 我的表product有列: product name product price product description product image …. 我要求我有一个带有列的datagridview ,我从数据库中获取这些: product name product price product image …. 现在我想显示这样的工具提示:如果我将鼠标hover在产品图像上,将显示该产品的产品说明。 我想为每一行做这件事。 有人请帮忙吗?

在List 上对Datagridview数据源进行排序,其中T是匿名的

一个相对简单的问题。 我有一个datagridview,它所做的就是显示统计信息。 没有编辑/添加/删除行。 datagridview绑定到List。 我想要实现的是让用户能够对列进行排序。 class Market { public int Location {get;set;} public float Value {get;set;} //… } class City { public String Name {get;set;} //… } List _markets; List _cities; //Lists are populated. dataGridView1.DataSource = _markets.Select(market => new { _cities[market.Location].Name, market.Value}).ToList(); 正如所料,列不可排序,但显示的信息是您想要的。 我的问题是如何根据具有最少复杂和最少代码量的列类型进行DataGridView排序,因为代码将在整个过程中多次使用。 此应用程序用于使用具有视图的数据库。 然后这些视图填充DataGridViews。 视图仍然存在,因此可能的解决方案可能是: DataBase.ViewMarketValue temp = new DataBase.ViewMarketValue() _markets.ForEach(market => temp.AddViewMarketValueRow(_cities[market.Location].Name, […]