从ASP.net表单刷新问题窗口

时间:2017-11-27 11:20:42

标签: c# asp.net

如果datagrid为空,我每隔30分钟尝试刷新一次表单。我的代码如下:

[error]   required: no arguments
[error]   found: java.lang.String
[error]   reason: actual and formal argument lists differ in length
[error]         .mapValues(value -> Path.process(value));

当数据网格的RowCount为private void Form1_Load(object sender, EventArgs e) { BindDataGrid(); if (dataGrid_FileList.RowCount <=0) { Timer refreshTimer = new Timer(); refreshTimer.Interval = 30000; //30 seconds in milliseconds refreshTimer.Tick += new EventHandler(refreshTimer_Tick); refreshTimer.Start(); } } void refreshTimer_Tick(object sender, EventArgs e) { this.Controls.Clear(); this.InitializeComponent(); BindDataGrid(); if (dataGrid_FileList.RowCount>0) { InhouseDownloadeer_Shown(this, null); } } 时,此代码可以很好地工作,但即使在数据网格包含行<=0之后它仍在继续。如果datagrid包含行,我该如何阻止refreshTimer_Tick?

2 个答案:

答案 0 :(得分:1)

您也可以停止计时器。在方法之外声明timer变量。

Timer refreshTimer = new Timer();

private void Form1_Load(object sender, EventArgs e)
{
    refreshTimer.Interval = 30000;
    refreshTimer.Tick += new EventHandler(refreshTimer_Tick);
}

现在只需在另一种方法中调用refreshTimer.Stop();

PS asp.netwinforms不是一回事。

答案 1 :(得分:1)

您可以在数据绑定方法之后调用if语句。我认为它会在datagrid绑定行之前执行。

对我来说,你应该从refreshTimerTick事件中删除这段代码:

    if (dataGrid_FileList.RowCount>0)
    {
       InhouseDownloadeer_Shown(this, null);
    } 

喜欢:

    void refreshTimer_Tick(object sender, EventArgs e)
    {
        this.Controls.Clear();
        this.InitializeComponent();
        BindDataGrid();        
     }

并将其放入DataBount事件

  void dataGrid_DataBound(object sender, EventArgs e)
  {
     if (dataGrid_FileList.RowCount>0)
        {
            InhouseDownloadeer_Shown(this, null);
        }    
  }