2009-06-04 2 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. 

どうやってこれを行いますか? Windows上の

.Select作品は、テキストボックスをフォームではなく、ウェブは、テキストボックスをフォーム。

答えて

0

はあなたのコメントをもとに、あなたはASP.NETコントロールを扱っているあなたの質問に指定することもできます。 Chrisの答えは、WinFormsのテキストボックスで動作します。

私はあなたがASP.NETでそれを行うだろうかわからないんだけど、私は、サーバー側のコードでそれを行うことはできません賭けることができます。おそらくJavaScriptを使用してそれを取り除かなければならないでしょう。

3

あなたは、クライアント側のスクリプトは、あなたが望む効果を実行するために必要とされるであろうことを理解する必要があります。ただし、要素を正確に識別するためにはサーバー側のコードが必要になります。

次のコードを:これは、あなたがtxtDaysテキストボックスの「レンダリングされたID」を必要とする理由(それはGridViewの中にあることから、レンダリングされたIDが異なるものになります)、次のようにJavaScriptを使用して

は、あなたがそれを行うことができますですたとえば、あなたのASPXページにあります(関数にラップすることができます)。私はあなたがJavaScriptに精通していると仮定しています。

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

VBで探している機能がありません。 Focus()機能のみため、クライアント側のコードで上記のサンプルと同様のJavaScript関数をレンダリングFocus APIの実装の(.NETを2.0+)が存在します。

編集:その場合は(コメントの後)

、私はあなたの代わりに(あなたのコードサンプルでは)動作しない行の次のようなものを使用することができますね。

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

これはonfocusイベントが発生したときに、テキストボックスが同様に選択されることを確保すべきです。

+0

あなたの余分な助けてくれてありがとう(+1)。しかし、私はあなたが要求したもののような機能を試しましたが、txtdaysが宣言されていないというjavascriptエラーが出ます。私のtxtdaysはテンプレートフィールドにありますが、それは正しいと思いますか?マークアップを投稿する必要がありますか? – Eric

+0

Hmmm ...マークアップではなく、もっと多くの情報が必要だと思います。何が起こっているのか正確にImageButtonをクリックすると、ページがサーバーにポストバックされ、提供されたコードが実行されるようです。したがって、このページはブラウザに表示される必要がありますが、テキストボックスのみが選択されていますか?これが唯一の機能である場合は、サーバーにまったくポストバックする必要はありません。 – Cerebrus

+0

GridViewの子コントロールのレンダリングされたIDがかなり異なるため、JSはテキストボックスを見つけることができません。レンダリングされたページのHTMLソースを見てみると、 "MyGridView_ctl01_txtDays"のようになります。そのIDをJavascriptに渡すと、そのIDをフォーカスして選択することができます。 – Cerebrus

関連する問題