如何用c#对datagridview刷新, 是否重新绑定一下, 怎样重新绑定。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用c#对datagridview刷新, 是否重新绑定一下, 怎样重新绑定。相关的知识,希望对你有一定的参考价值。

我这里有做过datagridview实现数据的绑定和刷新的vb代码段,你认真看看(改下语法就可以了),应该会有帮助的,数据库是名info.mdb(也是access数据库);
Protected Sub datagridview_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles d.UpdateCommand

//数据库字段名
Dim aname As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text
Dim azhuan As String = CType(e.Item.Cells(2).Controls(0), TextBox).Text
Dim aasp As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim ac As String = CType(e.Item.Cells(4).Controls(0), TextBox).Text
Dim ajava As String = CType(e.Item.Cells(5).Controls(0), TextBox).Text
Dim acc As String = CType(e.Item.Cells(6).Controls(0), TextBox).Text

//数据库连接
Dim conn1 As New OleDbConnection
conn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("info.mdb")
conn1.Open()
Dim cmd As New OleDbCommand
'cmd.CommandText = "update score set name='" & aname & "',专业='" & azhuan & "',asp=" & aasp & ",c++=" & ac & ",java=" & ajava & ",c#=" & acc & " where " & d.DataKeyField & "='" & d.DataKeys(e.Item.ItemIndex) & "'"
cmd.CommandText = "update score set name='" & aname & "',专业='" & azhuan & "',asp=" & aasp & ",c语言=" & ac & ",java=" & ajava & ",photoshop=" & acc & " where " & d.DataKeyField & "='" & d.DataKeys(e.Item.ItemIndex) & "'"
cmd.Connection = conn1
Try
cmd.ExecuteNonQuery()
conn1.Close()
d.EditItemIndex = -1
bindlist()
Catch
Response.Write(cmd.CommandText)
End Try
End Sub
参考技术A 个人建议不要采用更新数据源的方式进行刷新,因为大数据量的情况下会影响加载速度。 对于新增的数据,直接构建DataGridviewRow加进去即可。修改的数据直接对Datagridview的数据行进行数据修改就可以了。 参考技术B 刷新 就是 重新绑定
dataGridView1.DataSource="新的dataset数据";
datagridview1.databind();
参考技术C 设置dataGridView1.DataSource属性就行了,当然你要先有可以用于数据绑定的DataTable或者DataSet。。追问

可以把代码发过来吗?我是用access数据库的

追答

http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.datasource.aspx
参考msdn里面的示例代码吧,把sql改成OleDb,再改一下connection string就可以连你的access数据库了。

本回答被提问者采纳

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

【中文标题】C# - 删除行后如何刷新 DataGridView【英文标题】:C# - how do I refresh DataGridView after removing rows 【发布时间】:2010-12-06 08:14:19 【问题描述】:

在我的代码中,我需要在重复间隔后从 DataGridView 中删除行,因此我在计时器到期时调用以下函数:

private void removeRows(DataGridView dgv) 

    foreach (DataGridViewRow row in dgv.Rows)
    
        // if some condition holds
        dgv.Remove(row);                
    
    dgv.Refresh();


我知道这些行已成功从 DataGridView 中删除,但无论出于何种原因它们仍保留在显示中。关于我可能做错的任何提示?

【问题讨论】:

【参考方案1】:

不需要重新绑定数据网格吗?

dgrv.Datasource = [whatever data source];
dgrv.DataBind();

?

【讨论】:

DataGridView 是一个 winforms 控件,因此不需要数据绑定。如果是 ASP .NET,在他的示例中删除行不会影响数据源。因此,这样做会使 gridview 在删除它们之前显示相同的数据。【参考方案2】:

有时刷新数据网格视图是不够的,它的包含父视图也应该刷新。

试试这个:

dgv.Refresh(); // Make sure this comes first
dgv.Parent.Refresh(); // Make sure this comes second

您还可以编辑源并将新数据源附加到控件。

【讨论】:

【参考方案3】:

如果您已将数据网格绑定到 Observable Collection(如果没有,那么您应该),那么您将需要实现 INotifyCollectionChanged 接口,以便侦听器收到动态更改的通知,例如添加和删除项目或整个列表时刷新。

HTH

【讨论】:

对不起,不熟悉(c#新手)。你能扩大一点吗?谢谢。 您好,如果您编辑帖子并添加一些有关如何填充数据源的信息,那么我可以为您提供一些指导。干杯。【参考方案4】:

如果我的理解正确,您想从 DGV 中删除用户选择的行。

    使用 DGV 的 DataGridViewRowCollection 而不是 DataTable 的 DataRowCollection。 DataGridViewRow 具有 Selected 属性,该属性指示是否选择了一行。

    一旦确定要删除一行,就可以使用 DataGridViewRowCollection 的 Remove 方法从网格中删除该项目,例如YerDataGridView.Rows.Remove(row)

    请注意,此时,虽然该项目已从 DGV 中删除,但仍未从 Access DB 中删除。您需要在 DataSet/DataTable 上调用 TableAdapter Update 方法以将删除提交到数据库,例如YerTableAdapter.Update(YerDataSet)

我通常会在从 DGV 中删除所有要删除的项目后调用一次更新以提交更改。

【讨论】:

【参考方案5】:

这段代码可能很有用:

dataGridView.DataSource = null;
dataGridView.Update();
dataGridView.Refresh();
dataGridView.DataSource = SomeDataSource;

希望这会有所帮助。

【讨论】:

【参考方案6】:

如果是数据绑定网格,您应该使用绑定源本身而不是网格。

【讨论】:

【参考方案7】:

尝试从绑定源中删除实际项目。

【讨论】:

以上是关于如何用c#对datagridview刷新, 是否重新绑定一下, 怎样重新绑定。的主要内容,如果未能解决你的问题,请参考以下文章

如何用来自datagridivew1 c#的信息填充datagridview2

C#中datagridview如何绑定ArrayList集合?

C# DataGridView List集合 刷新

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

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

C# winform DataGridView刷新慢