刷新 DataGridView 内容

     2023-05-08     97

关键词:

【中文标题】刷新 DataGridView 内容【英文标题】:Refresh DataGridView content 【发布时间】:2013-05-07 16:16:42 【问题描述】:

我想在 C# Winform 中刷新 DataGridView 的内容并保持其视觉外观。

我可以进行刷新的唯一方法是使用这个重新初始化网格的函数:

它更新数据源,清除所有列并使用正确的标题文本恢复所需的列。

private void InitDataGrid()

    allItem = DataRepository.LotProvider.GetByIdProduit(detail.IdProduit)
    dataGridView1.DataSource = allItem;
    dataGridView1.Columns.Clear();
    // Get a dictionary of the required column ID / shown text
    Dictionary<string, string> dictionary = InitDisplayedFields();        
    foreach (KeyValuePair<string, string> column in dictionary)
        // If the grid does not contain the key
        if (!dataGridView1.Columns.Contains(column.Key))
        
            // Add the column (key-value)
            int id = dataGridView1.Columns.Add(column.Key, column.Value);
            // Bind the property
            dataGridView1.Columns[id].DataPropertyName = column.Key;
        

问题是,如果用户将列从 Y 大小拉伸到 X 大小并刷新 DataGridView,该列将回到 Y 大小。

我无法绕过 Clear(),否则网格会在初始化时显示所有数据源列。

我想要的是保持每个拉伸列的 X 大小。

对于优化当前代码的任何建议,我将不胜感激。

【问题讨论】:

【参考方案1】:

我认为您必须先捕获列的大小,然后才能开始将新数据源绑定到它。

在绑定之前使用类似的东西

List<int> widthsList= new List<int>();
foreach (var column in dataGridView1.Columns)

   int ColumnWidth = column.Width;
   widthsList.Add(ColumnWidth);

绑定后的这个

int j=0;
foreach (int wz in widthsList)

   dataGridView1.Columns[j].Width = wz ;
   j++;

【讨论】:

DataColumn 类似乎没有 Width 属性,也不包含任何与 UI 相关的属性。而是需要直接通过dataGridView1.Columns[index]来访问。 尝试将 var 替换为 DataGridViewColumn ,它可以访问 Width 属性。效果很好。

datagridview刷新后报索引异常的问题

...有值或索引(int)x没有值昨天弄了一个下午,发现bug原因:dataGridView中有数据时,默认会选中第一行。当我们把dataSet中的数据清空时,dataGridview中就没有内容了,但是dataGrieView还是在选中第一行,所以就会出现索引0没有值的错误... 查看详情

c#怎样把access数据库中的数据刷新一下显示在datagridview中

新手请教,我在数据表插入了一行数据后,但DataGridView显示的所有内容中不会更新刚才的数据,所以我想弄一个button来作为刷新按钮,点击后重新调用这个更新后的表的内容,但不知道怎样实现,我只想知道privatevoidbtnflush_Click(o... 查看详情

从另一个表单刷新 dataGridView

】从另一个表单刷新dataGridView【英文标题】:refreshadataGridViewfromanotherform【发布时间】:2015-01-1600:06:09【问题描述】:我有Form1和Form2。Form1有一个dataGridView和一个用于打开Form2的按钮。我在Form1中编写了一个方法,如下所示,可以... 查看详情

从子窗体刷新 DataGridView

】从子窗体刷新DataGridView【英文标题】:RefreshDataGridViewfromchildForm【发布时间】:2011-12-1404:30:57【问题描述】:让我快速描述一下场景:1)在Form1中,我有一个名为dgv_Employee的dataGridView和一个searchButton。2)在Form1的pageload事件中有... 查看详情

更新数据源时刷新 DataGridView

】更新数据源时刷新DataGridView【英文标题】:RefreshDataGridViewwhenupdatingdatasource【发布时间】:2010-09-2005:03:27【问题描述】:当您更新基础数据源时,刷新DataGridView的最佳方式是什么?我经常更新数据源,并希望在结果发生时向用... 查看详情

如何使用 BackGroundWorker 刷新 DataGridView

】如何使用BackGroundWorker刷新DataGridView【英文标题】:HowtorefreshDataGridViewwithBackGroundWorker【发布时间】:2020-09-2314:07:47【问题描述】:我正在尝试创建一个接收文件路径列表并按顺序打印所有这些文件的应用程序。打印文件时,您... 查看详情

通过单击按钮刷新另一个表单 DataGridView

】通过单击按钮刷新另一个表单DataGridView【英文标题】:RefreshanotherformsDataGridViewfrombuttonclick【发布时间】:2014-02-1721:47:20【问题描述】:我有一个表单(customersForm)显示带有客户信息的datagridview。第二个表单(viewForm)允许用户查看... 查看详情

关闭子窗体时如何刷新datagridview?

】关闭子窗体时如何刷新datagridview?【英文标题】:Howtorefreshdatagridviewwhenclosingchildform?【发布时间】:2011-01-2415:14:50【问题描述】:我的主窗体上有一个dgv,有一个按钮可以打开另一个窗体以将一些数据插入到与dgv绑定的数据源... 查看详情

C# - 删除行后如何刷新 DataGridView

】C#-删除行后如何刷新DataGridView【英文标题】:C#-howdoIrefreshDataGridViewafterremovingrows【发布时间】:2010-12-0608:14:19【问题描述】:在我的代码中,我需要在重复间隔后从DataGridView中删除行,因此我在计时器到期时调用以下函数:pri... 查看详情

插入后如何在datagridview中立即刷新或显示?

】插入后如何在datagridview中立即刷新或显示?【英文标题】:Howtorefreshorshowimmediatelyindatagridviewafterinserting?【发布时间】:2014-02-1311:03:09【问题描述】:在所有文本框中输入数据后,点击提交按钮后,它不会立即显示在datagridview... 查看详情

数据集更新vb.net后DataGridView不刷新

】数据集更新vb.net后DataGridView不刷新【英文标题】:DataGridViewdoesnotrefreshafterdatasetupdatevb.net【发布时间】:2012-04-2509:52:12【问题描述】:我有一个带有dataGridView的vb.net表单dataGridView数据源是带有这条sql语句的dgvTableAdapterSELECTmembres... 查看详情

更新后如何连续刷新datagridview

】更新后如何连续刷新datagridview【英文标题】:HowtoRefreshdatagridviewcontinouslyafterUpdating【发布时间】:2012-06-1705:24:47【问题描述】:我正在使用此代码在访问数据库中更新数据后更新我的数据网格视图。数据每秒更新一次我将此代... 查看详情

如何在 CheckBox Click 上刷新绑定的 DataGridView

】如何在CheckBoxClick上刷新绑定的DataGridView【英文标题】:HowToRefreshaBoundDataGridViewOnCheckBoxClick【发布时间】:2014-03-2914:34:04【问题描述】:目标我需要一种方法将项目设置为已完成,方法是单击绑定的DataGridView中的CheckBox。完成后... 查看详情

每次按下刷新按钮时DataGridView都会重复vb.net

】每次按下刷新按钮时DataGridView都会重复vb.net【英文标题】:DataGridViewduplicatingeverytimeIpressrefreshbuttonvb.net【发布时间】:2021-04-0111:14:18【问题描述】:我正在尝试刷新我的DataGridView1。我想我必须添加一个清除功能,因为每次按... 查看详情

值更改时绑定到 BindingList 的 DataGridView 不刷新

】值更改时绑定到BindingList的DataGridView不刷新【英文标题】:DataGridViewboundtoBindingListdoesnotrefreshwhenvaluechanged【发布时间】:2011-03-2109:23:07【问题描述】:我有一个绑定到BindingList(C#Windows窗体)的DataGridView。如果我更改列表中某... 查看详情

刷新datagridview vb.net中的数据

】刷新datagridviewvb.net中的数据【英文标题】:Refreshdataindatagridviewvb.net【发布时间】:2016-05-2009:27:25【问题描述】:在我的主窗体中,我有一个刷新按钮。问题是当我尝试点击它时,它不会刷新什么也没发生。下面是我的刷新按... 查看详情

C# 在更新或插入另一个表单时刷新 DataGridView

】C#在更新或插入另一个表单时刷新DataGridView【英文标题】:C#refreshDataGridViewwhenupdatingorinsertedonanotherform【发布时间】:2013-03-2014:16:28【问题描述】:我有2个表格,分别是formA和formB,formA允许用户插入和更新学生信息。formb只是... 查看详情

无法刷新绑定到 DataTable 的 DataGridView

】无法刷新绑定到DataTable的DataGridView【英文标题】:UnabletorefreshDataGridViewthatisboundtoaDataTable【发布时间】:2019-04-1122:58:50【问题描述】:我已经使用论坛上的其他答案尝试了所有方法。我只是希望我的数据网格视图在进行更改后... 查看详情