我有使用C#/ .Net爲我們的Intranet編寫的這個應用程序。在一個地方,我正在檢查一個OnLeave事件的值來自動填充一些字段。問題是,如果用戶直接從字段到提交按鈕,OnLeave事件觸發但字段不填充。如何獲得C#Web應用程序以「趕上」?
我在考慮VBA中的DoEvents,它看起來像我可能使用「Application.DoEvents」,但是當我嘗試它時,它會以紅色突出顯示。我還發現了一個名爲「渲染()」的東西,但是當我嘗試它時,它會以藍色突出顯示。
任何人都可以告訴我如何讓這段代碼「趕上」自己,以便我所有的數據都能正確渲染?請記住,我對C#還是有點新,所以如果你能夠儘可能的明確/徹底,我會很感激。
編輯
我有這樣的代碼作爲文本框的OnLeave事件:
protected void txtClientID_OnLeave(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(str2))
{
//Query the Reports table to find the record associated with the selected report
using (SqlCommand cmd = new SqlCommand("SELECT * FROM VW_MOS_DPL_AccountValidation WHERE CLIENT_ID = '" + txtClientID.Text + "'", con))
{
con.Open();
using (SqlDataReader DT1 = cmd.ExecuteReader())
{
// If the SQL returns any records, process the info
if (DT1.HasRows)
{
while (DT1.Read())
{
try
{
int TaskID = Convert.ToInt32(ddlTask.SelectedValue);
// This should allow Client ID to autofill if Eligibility --> Enrollment records are used.
// Add more Task IDs to this list if necessary.
List<int> list = new List<int>() { 154, 156, 157, 158, 160, 161, 165 };
if (list.Contains(TaskID))
{
//lblAccountName.Text = (DT1["CUST_NM"].ToString());
Label2.Text = (DT1["CUST_NM"].ToString());
//lblAccountName.Visible = true;
TBAccountNum.Text = (DT1["CUST_NUM"].ToString());
TBAccountNum.Visible = true;
}
}
catch (Exception ae)
{
Response.Write(ae.Message);
}
}
}
// If the SQL returns no records, return a static "No Records Found" message
else
{
//lblAccountName.Text = "No Matching Account Name";
Label2.Text = "No Matching Account Name";
//lblAccountName.Visible = true;
TBAccountNum.Text = "";
}
}
}
}
}
我也有一個提交按鈕,按下按鈕時,第一件事,我想確保所有被這個OnLeave填充的字段實際上都被填充了。問題是,如果我經過它,它們都有值,但是如果我運行它,這些值永遠不會出現在屏幕上。
我也試過「System.Threading.Thread.Sleep(100);」根據我在另一個網站上看到的建議,但這似乎沒有做任何事情。
我想你最好發佈一些代碼,因爲你離開了。 – 2014-09-02 19:42:09
如果這些字段爲空,請在提交點擊時執行自動填寫代碼?很難知道發生了什麼,沒有一些代碼。 – 2014-09-02 19:42:49
您是否使用ASP.NET Web窗體? 2014年? – bzlm 2014-09-02 19:42:55