Windows Form refresh datagridview
我对C#和Windows表单还很陌生。我的问题是添加date时需要刷新绑定的datagridview,如果未输入date则需要刷新计时器。我有三种形式。表单1是登录屏幕,该屏幕打开并填充表单3中的date。在输入空格键后,打开表单2,其中填充了date信息。在按钮上单击以保存表格2,我需要刷新表格3。这是我的第一篇文章,希望我有道理,我已经尝试解决了数周。在此先感谢您的帮助。
- 您能否显示您的代码示例,以便我们进行复制?
-
每次输入date信息后,您是否要关闭表格2?
-
是,每次输入date时,jaredbaszsler表格2都会关闭。
在Form2中,将其添加到您单击按钮的事件处理程序中,该事件处理程序将回调到您的Form3单例实例:
1 2 3 4
| private void button1_Click(object sender, EventArgs e)
{
Form3.Instance.RefreshGrid();
} |
然后在Form3中,您需要一个属性来保存表单的单例实例,并需要一种刷新网格的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public partial class Form3 : Form
{
private static Form3 _instance;
public static Form3 Instance
{
get { return _instance; }
}
public Form3()
{
if (_instance == null)
{
_instance = this;
}
InitializeComponent();
}
public void RefreshGrid()
{
this.dataGridView.Refresh();
}
} |
- 谢谢Mangist,我完全按照您说的得到了此错误-Error \\\\ t1 \\\\ tType \\'namespace.Form3 \\'已经使用相同的参数类型定义了一个名为''Form3 \\'的成员
-
再次检查代码,那些私有和公共静态成员需要进入Form3中。
-
公共局部类Form3:Form {private static Form3 _instance;公共静态Form3实例{get {return _instance; }私有Form1 form1;公共Form3(){如果(_instance == null){_instance = this; } InitializeComponent(); BindGrid();
-
不要将新文件添加到您的项目中。将这些属性和方法从Form3放到Form3类中。您现在有2个Form3。
-
嗨,Mangist,我按照您的建议进行了操作,但是仍然无法刷新网格。
-
嗨,当int行= cmd.ExecuteNonQuery();时,逐步完成了代码。 Form3.Instance.RefreshGrid();
-
嗨,当int行= cmd.ExecuteNonQuery();时,逐步完成了代码。 Form3.Instance.RefreshGrid();传递给公共静态Form3实例{get {return _instance}然后返回Form3.Instance.RefreshGrid();然后public void RefreshGrid(){this.dataGridView1.Refresh(); }然后是Form3.Instance.RefreshGrid();然后this.Close();然后以f2.ShowDialog()结尾;
-
如果要从数据库中重新加载数据,则需要在RefreshGrid内的网格上设置数据源。将您的代码发布到网格表格中,我可以提供帮助。
-
公共无效BindGrid(){字符串connectionString = @ "数据源";使用(SqlConnection con =新的SqlConnection(connectionString)){使用(SqlCommand cmd =新的SqlCommand(" SELECT *来自date的时间顺序ASC){cmd.CommandType = CommandType.Text;使用(SqlDataAdapter sda =新的SqlDataAdapter(cmd) ){使用(DataTable dt = new DataTable()){sda.Fill(dt); dataGridView1.DataSource = dt;}}}}}
-
感谢您对Mangist的帮助,非常感谢。
-
我想你能做到这一点吗?在RefreshGrid()方法中,您需要重新查询SQL数据库并调用BindGrid()方法。如果您能够使用我发布的代码,请将此答案标记为已回答。
-
很抱歉,我看过Mangist,我该如何标记为已回答。