2017-04-12 50 views
0

我一直在嘗試不同的方法來解決這個問題,但我還沒有找到一個可靠的解決方案來解決我的問題。問題是我必須重新加載表單,以防第一次啓動應用程序,並且由於網絡或SQL連接問題導致組件未填滿。截至目前,每個人都在關閉應用程序並重新開始,因爲他們第一次啓動應用程序時組件是空的。我需要重新加載窗體上的按鈕點擊

以下是我正在使用的代碼。

private void Reports_Load(object sender, EventArgs e) 
{ 
    //START: 
    try 
    { 
     RevenueDate_dt = func.getResult(dateQuery); 
     foreach (DataRow dr in RevenueDate_dt.Rows) 
     { 
      comboBox1.Items.Add(dr["Global_Period_Month"].ToString()); 
     } 
    } 
    catch (Exception ex) 
    { 
     //goto START; 
     MessageBox.Show("Network is too slow! Please close the application and try again later"); 
    } 
} 

功能:

public DataTable getResult(string query) 
{ 
    //con.Open(); 
    SqlDataAdapter da = new SqlDataAdapter(); 
    DataTable dt = new DataTable(); 
    SqlCommand cmd = new SqlCommand(query, con); 
    cmd.CommandTimeout = 0; 
    da.SelectCommand = cmd; 
    da.Fill(dt); 
    return dt; 
} 

我已經把我的形式重試按鈕,如果第一時間的成分中不填充數據,這樣每個人都可以使用重試按鈕加載組件,而不是關閉整個應用程序並重新開始。

+0

(你的意思「而不是」,而不是「儘管」,即「使每個人都可以使用重試按鈕,而不是加載關閉整個應用程序,並重新開始的組成部分」? )...所以,你有一個按鈕點擊事件處理程序的方法? – criticalfix

+2

我會專注於網絡問題,特別是因爲這看起來像本地網絡。 – LarsTech

+0

@criticalfix是的,而不是...... umm不,我沒有按鈕點擊事件處理程序的方法。 –

回答

1

您可以通過在您的retry button中撥打Reports_Loadevent來填寫組件。 Reports_Load將填充您的組件。檢查下面的代碼。

CODE:

private void retry_Click(object sender, EventArgs e) 
{ 
    Reports_Load(null, null); 
} 
+0

非常感謝你@csharpbd它完美的作品:)第一次它沒有填寫,但當我用你的代碼它的作品:) –

+0

不客氣!!!!! – csharpbd

+0

@SohaibAkhtar負載事件是否連線了? – LarsTech