2009-06-04 135 views
0

我有一個Web窗體在GridView的文本框,我想higlight點擊一個按鈕的文本。 textbox.select(start,end)不起作用。這裏是代碼:突出顯示文本不可

Dim row As GridViewRow = TryCast(DirectCast(sender, ImageButton).Parent.Parent, GridViewRow) 
    Dim txtdays As TextBox = row.Cells(2).FindControl("txtDays") 
    Dim lbldays As Label = row.Cells(2).FindControl("lblDays") 
    Dim btndel As ImageButton = row.Cells(2).FindControl("btndel") 
    Dim imgbttnadd As ImageButton = row.Cells(2).FindControl("imgbttnadd") 

    //Show textbox and set its text. 
    txtdays.Visible = True 
    txtdays.Text = lbldays.Text 
    txtdays.Focus() 

    //Here is where I want to select the text. 
    txtdays.Select() //???????? Doesn't work. 

你是如何做到這一點的?

.Select適用於Windows窗體文本框,但不適用於Web窗體文本框。

回答

0

根據您的意見,您可能希望在您的問題中指定您正在處理ASP.NET控件。 Chris給出的答案可以用於WinForms文本框。

我不確定你在ASP.NET中如何做,但我敢打賭,你不能在服務器端代碼中做到這一點。您可能必須使用JavaScript來關閉它。

3

您需要了解客戶端腳本將需要執行您想要的效果。但是,需要服務器端代碼才能準確識別元素。這就是爲什麼你需要txtDays TextBox的「渲染ID」(因爲它位於一個GridView,呈現的ID會有所不同)

使用JavaScript,您可以按如下做到這一點:

下面的代碼比如你的ASPX頁面(你可能想把它包裝在一個函數中)。我假設你對JavaScript基本熟悉。

var txtDays = document.getElementById(<%= txtDays.ClientID %>); 
if (txtDays != null) 
{ 
    txtDays.focus(); 
    txtDays.select(); 
} 

您在VB中查找的Select函數不存在。由於Focus API的實現,Focus()函數僅存在於.NET 2.0+中,該函數在客戶端代碼中呈現類似於上述示例的JavaScript函數。

編輯:(評論後)

在這種情況下,我想你可以使用類似下面的,而不是不工作行(你的代碼示例中)。

txtDays.Attributes.Add("onfocus", "this.select();") 

這將確保當引發onfocus事件,文本框也會被選中。

+0

感謝您的額外幫助(+1)。但我已經嘗試了一個很像你請求的函數,但我得到一個JavaScript錯誤,說txtdays沒有聲明。我的txtdays在模板字段中,但它應該找到它的權利?我應該發佈一些標記嗎? – Eric 2009-06-04 16:33:55