2010-09-20 91 views
0

我對asp.net真的很陌生,有幾個問題想要解決。我有一些編程經驗,但它不是asp.net。但是,我已經能夠遵循足夠的代碼來對代碼進行其他更改以解決其他問題。asp.net C#焦點問題,page_load

首先是這樣的:

我使用具有當用戶輸入量文本框中輸入一個值,該值被稱爲計算量方法的形式工作。當下一個控件支付次數有一個值時,會調用相同的方法。

所以在兩個對照:

onTextChanged="ctrlName_textChanged" 

然後,在後面的代碼,所述框TextChanged方法執行:

calculateAmount(); 

被計算和返回的量後的問題是,焦點似乎得到重置並且用戶必須一直回到表單到他們所在的位置。

問題中的文本框位於開始隱藏的面板中,並有條件顯示。

如果我沒有使用正確的.net術語,我很抱歉。

看起來像是同樣的問題可能導致我的第二個問題。當用戶輸入金額然後製表並快速添加付款次數時,您可以看到正確計算的金額,並且很快就會在總金額文本框中顯示正確的總金額。但是,即使它顯示的時間很短,Tab鍵順序也會重新設置以及總金額值。

我看過不同的方法來嘗試和解決焦點問題。

在框TextChanged方法,我嘗試使用類似:

Session["myval"] = "someval"; 

然後試圖覈對,在Page_Load中的東西,如: 如果(!會話[ 「設爲myVal」] = NULL){ 此.NextControl_Name.Focus(); }

但它沒有正常工作。

我也嘗試使用這樣的事情在同一框TextChanged方法設置cookie:

Response.Cookies["myval"].Value = "somevalue"; 

然後嘗試使用類似以前,如果塊以上,但使用Request.Cookies時[檢查在Page_Load中」 myval「]作爲來源。

對於這種類型的實現,我可以查看一些非常清晰的代碼示例是否有很好的參考?

謝謝你在前進,

C.

回答

1

聽起來像是你有一個回發的問題...

記住網頁是無狀態的。這意味着當你有一個網頁呈現出來。NET,並附加一個執行服務器端代碼的事件......它將HTTP POST發送回服務器,這實際上是一個新的頁面請求。 Page_Load方法將再次觸發以及綁定事件。所以你的onTextChanged事件正在向服務器發起一個新的請求。這就是爲什麼你會看到焦點重置,以及爲什麼當你快速標籤時,這個價值似乎神奇地消失了。

你可以做的幾件事情之一,你可以在AjaxControlToolkit實施的UpdatePanel http://www.asp.net/ajax/ajaxcontroltoolkit/samples/

可以使用PageMethods使用JavaScript和jQuery(或其他JS庫)就開始驗證 請參閱第方法資訊http://www.geekzilla.co.uk/View30F417D1-8E5B-4C03-99EB-379F167F26B6.htm

希望這有助於

+0

優秀的答案,很多很多人都有這樣的障礙時與ASP.NET開始,他們忘記了底層協議是無狀態的。就在那一天,我不得不教一個10年+程序員這個確切的事情。我認爲一些責任在於ASP試圖隱藏底層的方式...... – 2010-09-20 19:56:40

+0

謝謝eddy ...是的,我在.NET中掙扎了一段時間,然後才終於弄明白了。一旦你「得到」它是相當強大的,但我同意我認爲他們試圖隱藏許多潛在的齒輪,它讓很多新人陷入困境 – 2010-09-20 19:59:06