2011-12-06 15 views
1

H、ユーザーコントロールからのaspx値へのアクセス

私のaspxページにはusercontrolにボタンが含まれています。 UserControlのボタンのOnclick私はjavascriptメソッドを起動しようとしています。だから私はボタンをクリックするとJavaScriptを何とか実行するために、私はaspxページからテキストボックスの値にアクセスしたいと思う。

this.getElementbyID[txtbox].valueよう

何か。

可能ですか?またはusercontrolからaspxページのコントロールにアクセスする他の方法があります。事前に

おかげで、ユーザーコントロールのコードビハインドで Pavan

+1

あなたが役に立ったら、回答を受け入れて投稿に投票してください。それらはすべての答えの左にあるコントロールです。 – LarsTech

答えて

1

使用FindControl方法。 .aspxページにTextBox1コントロールがあり、その.aspxページが "said"ユーザーコントロールの親である場合、ユーザーコントロールのボタンのクリックハンドラーに次の行を追加することができます。

TextBox tx = (TextBox)Parent.FindControl("TextBox1"); 
3

はいレンダリング後、ページ全体(aspxページ+ユーザーコントロール)が1ページとして扱われるため、可能です。

したがって、有効なjavascriptを使用して、アクセスしているコントロールのクライアントIDを知っている限り、要素にアクセスできます。

私は、ユーザーコントロールにこのコードを入れてしまうでしょう

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#yourButtonID').click(function() { 
       //search for your element 
       alert($('input[id$="TextBox1"]').val()); 
      }); 
     }); 
    </script> 

は、このことができます願っています!

+0

私は、クライアントIDの.NET操作を回避するためにAttribute-Endingセレクタ( "$ =")を使用するのが好きです。 ClientIDModeを 'Static'に設定できない場合は非常に創造的です。 – Graham

0

はいいくつかの方法があります。ユーザーコントロールはブラウザに直接レンダリングされるため、どこからでもIDで要素にアクセスできます。私はこのように個人的にやります。

document.getElementById('<%= ucUserControlID.TextBoxID %>').value 

問題あなたが持ってしようとしている:あなたが使用してクライアント側のJavaScriptでIDにアクセスすることができ、ページに次に

public string TextBoxID 
{ 
    get { return this.TextBox1.ClientID; } 
} 

:あなたは後ろのユーザーコントロールのコードにプロパティを追加することができますユーザーコントロールのテキストボックスがマスターページのあるページにある場合、そのIDはct100_contentplaceholder_somecontainer_usercontrolcontainer_textboxID(そのようなもの)になります。これを回避する方法は、document.getElementById("<%= TextBox1.ClientID %>")のようなアプローチを使用することですが、コントロールがこのステートメントがあるのと同じコンテナにある場合にのみ機能します。コントロールはユーザーコントロール内にあり、JSはページ内にあるため、クライアントIDを返すプロパティはうまく機能します。

関連する問題