2010-04-06 50 views
1

問題:在ASP .NET中將焦點設置爲Web控件的最佳方式是什麼?如何將焦點設置爲ASP.NET中的Web控件

我可以做到,但它很醜。我有一個網頁控制包裹在網頁控制託管的網頁控制。所以,如果你做了一個視圖|在頁面上的源代碼就像WrapperControl_Control_TextBox。我已經嘗試過抓取元素並將其設置爲焦點的「已嘗試和真正的」Javascript方法:document.getElementByID(「WrapperControl_Control_TextBox」).focus();並沒有奏效。我不知道爲什麼。

我知道我可能會這樣做: document.getElementById(「<%= TextBox.ClientID%>」).focus();我想也是。如果頁面中有「<%%>」,則無法動態地將控件添加到標題,因爲這會導致另一個完全單獨的錯誤,因此無法正常工作。 GAH。

在「最底部」控件中,我試着設置焦點(Page_Load中的TextBox.Focus()),但這也不起作用。

無論如何,工作的方式是通過簡單地採用頁面的ControlsCollection,抓住我需要的控件,獲取它的集合,抓住下一個較低的控件等等。

我只需要做這七次。所以我有八個foreach循環。

基本上,我的代碼是這樣的:

/////////////////////////////// //在頁面 ///////////////////////////////

ControlCollection controls = Controls; 

foreach(Control control in controls) 
{ 
    if (string.Equals(control.ID, "FormID", StringComparison.InvariantCultureIgnore)) 
    { 
     ControlCollection nextControls = control.Controls; 

     foreach(Control nextControl in nextControls) 
     { 
     if (string.Equals(nextControl.ID, "DivICareAboutInTheForm", StringComparison.InvariantCultureIgnor)) 
     { 
      ControlCollection nextNextControls = nextControl.Controls; 
      //: 
      //: 
      //Yes, it's that bad and so forth. 
      //: 
      //: 
     } 
     } 
    } 
} 

回答

2

您可以使用jQuery來搜索以您的文本框名稱結尾的ID。這樣你就不必調用UniqueID服務器端代碼。只要確保不要有相同名稱

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('[id$=txtBox]').focus(); 
      }); 
    </script> 

或者結束多個控件,您可以爲默認的文本框中使用一個類名。

<asp:Textbox ID="txtBox" runat="server" cCssClass="defaultTextbox" /> 

的jQuery:

$('.defaultTextbox').focus(); 
+0

我們沒有JQuery,但我會考慮添加它。謝謝。 – Dan7el 2010-04-07 14:01:00

+0

我安裝了JQuery並且使用腳本。有用!萬分感謝! – Dan7el 2010-04-07 18:25:12

0

你可以圍繞「不能添加動態控件,因爲頁面上存在<%=%>塊「錯誤,方法是將塊更改爲使用數據綁定語法:<%# TextBox.ClientID %>,並在Page_Load中手動調用Page.DataBind()

+0

有趣。我試過<%# %>的竅門,但不知道我需要添加Page.DataBind()。我會看看那個。謝謝。 – Dan7el 2010-04-07 14:01:32

+0

自從上面提到的JQuery解決方案起作用後,我沒有嘗試過,但是我非常感謝幫助。稍後我可能會考慮使用這種技術。 – Dan7el 2010-04-07 18:26:07

0

如果你真的想使用Page_Load方法,那麼你可以隨時撥打Page對象上SetFocus方法。

Page.SetFocus(myTextBox); 
+0

我會試試這個。謝謝。 – Dan7el 2010-04-07 14:02:00

+0

自從上面提到的JQuery解決方案起作用以後,我沒有嘗試這方面的工作,但我非常感謝幫助。稍後我可能會考慮使用這種技術。 – Dan7el 2010-04-07 18:26:42

相關問題