我有一个datagridview,它填充了linq查询返回的数据.如果查询没有返回任何结果,我想显示一个消息框.有没有办法检查datagridview是否为空?
问候
我可能会向后看这个问题,但我很好奇.有没有办法DataTable从目前显示的内容中构建一个DataGridView?
要清楚,我知道你可以这样做,DataTable data = (DataTable)(dgvMyMembers.DataSource);但包括隐藏的列.我想只从显示的列构建它.
希望有道理.
所以我最终尝试了几个答案的组合,因为这似乎是最好的.以下是我的尝试.基本上我是从DataSource创建DataTable,然后根据列是否可见来向后工作.但是,在删除列后,我会Collection was modified; enumeration operation may not execute在下一次迭代中得到一个foreach.
我很困惑,因为我不想要修改DataGridView,只有DataTable这样这是怎么回事?
DataTable data = GetDataTableFromDGV(dgvMyMembers);
private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = ((DataTable)dgv.DataSource).Copy();
foreach (DataGridViewColumn column in dgv.Columns)
{
if (!column.Visible)
{
dt.Columns.Remove(column.Name);
}
}
return dt;
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有隐藏日历的Windows表单.我想在DataGridView的当前单元格下面显示表单.位置根据当前单元格的位置而变化.
我不想要当前的单元格或当前列,我想要的位置,以便我可以设置我的日期表单的位置.
这是我正在使用但它不工作:
int po_X = paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Left+paygrid.Left;
int po_Y = paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Bottom+paygrid.Top;
form_date.Location = new System.Drawing.Point(po_X, po_Y);
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
private void dgvStatus_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in dgvStatus.Rows)
{
row.Cells[color.Index].Style.BackColor = Color.FromArgb(((GesTest.dsEssais.FMstatusAnomalieRow)row.DataBoundItem).iColor);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图从背景颜色列设置每个单元格的背景颜色.这不起作用颜色永远不会改变.知道为什么吗?
我一直在环顾四周,但没有找到任何有用的东西
将数据输入所有文本框后,单击提交按钮后,它不会立即显示在datagridview中,我需要重新打开表单才能看到新插入的行.要刷新什么代码?
跟着@ user3222297代码.通过添加grdPatient.Update(); 和grdPatient.Refresh(); 单击确定插入成功后仍然无法刷新.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
namespace GRP_02_03_SACP
{
public partial class patient : Form
{
// Data Table to store employee data
DataTable Patient = new DataTable();
// Keeps track of which row in Gridview
// is selected
DataGridViewRow currentRow = null;
SqlDataAdapter PatientAdapter;
public patient()
{
InitializeComponent();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
if (btnSubmit.Text == "Clear") …Run Code Online (Sandbox Code Playgroud) 如何在VB.Net中向DataGridView控件添加新记录?
我不使用数据集或数据库绑定.我有一个包含3个字段的小表单,当用户单击"确定"时,它们应作为新行添加到DataGridView控件中.
我已经DataGridView是必然DataSource的List<myClass>.但是当我将" AllowUserToAddRows"属性设置为"True"时,没有任何东西出现.
我试图改变true到DataSource,它的顺利.
我不知道我是否应该取代我BindingList<myClass>与List<>或有更好的解决方案.
我正在从数据表中填充datagridview.
在填充列和行时,我也同时对其进行格式化,这会导致datagridview加载速度非常慢,是否有解决此问题的方法?
我在C#中有一个WinForm.其中一个DataGridView类型是DataGridViewLinkColumn.如何处理每列的click事件?
此代码似乎不起作用:
private void UserDataTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//Code here
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我有10行,每当我点击对应于列" DataGridViewLinkColumn" 的每一行的内容时,我应该能够处理它.
谢谢
我有这个代码,我知道它运行得很快
CopyAlltoClipboard(dataGridViewControl);
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkBook = xlexcel.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Name = page.Name;
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
CR.Select();
xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Range["A1"]).EntireColumn.Delete(null); // delete the first column that has rows indexes
xlWorkBook.SaveAs(fileName);
private void CopyAlltoClipboard(DataGridView dataGridViewControl)
{
dataGridViewControl.SelectAll();
DataObject dataObj = dataGridViewControl.GetClipboardContent();
if (dataObj != null)
Invoke((Action)(() => { Clipboard.SetDataObject(dataObj); }));
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但它只复制值是excel,也不复制单元格格式(换行文本,背景颜色,字体,边框等)任何人都可以帮我这个吗?如何完成此代码具有DataGridView中的确切格式?
datagridview ×10
c# ×9
.net ×4
winforms ×4
bindinglist ×1
button ×1
datatable ×1
insert ×1
refresh ×1
vb.net ×1