2016-04-07 14 views
0

データベースに保存されているテキストボックスのIDを動的に入力しています。私は検索のためのパラメータを決定するデータセットから値を引き出す際に文字列として設定しています。文字列をHtmlControlデータ型に変換する

クライアントIDを使用してAttributes.Addメソッドの動的IDとして文字列パラメータを使用したいと考えています。私が必要とする最終結果は、ASP:TextboxのDate Pickerにonfocusイベントを設定することです。

例は次のように:

//setting the value of the item from the dataset 
string textCode = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString(); 

//inserting the value for use with ClientID 
textCode.Attributes.Add("onfocus", "datepicker('" + textCode.ClientID + "');"); 

私はエラーになっています:見つけることができる 『クライアントID』 『文字列』の最初の引数を受け入れるための定義が含まれていません 「『文字列』を(あなたをしています私はクライアントIDのような利用可能ですHTMLControlからに他の変数を変換するか、または設定しようとすると、「)」

を使用してディレクティブまたはアセンブリ参照が不足している:

HtmlControl txtCode = textCode; 

次のエラーが表示されます。「暗黙的に 'string'を 'System.Web.UI.HtmlControls.HtmlControl'に変換できません」

この動的IDを使用するにはどうすれば変換できますか?

ご協力いただきありがとうございます。

+0

は 'txtCode'制御IDですか?つまり、[FindControl()](https://msdn.microsoft.com/en-us/library/31hxzsdw.aspx)を探していますか? –

+0

txtCodeはtextCodeの変換のために作ったローカル変数です。 – user3404204

+0

あなたのtextCode変数の内容を(デバッガ上に表示して)送信できますか? –

答えて

0

コメントの後にさらに詳しい答え。 私はあなたのデータベースにasp.netサーバーのコントロールIdを格納しているようだ、データベースから取得した後、あなたのページのコントロールのIDを持つtextCode変数"txtCNo")。

最初の手順は、このIDを持つコントロールをページ上で見つけることです。簡単な方法はPage.FindControl(...)メソッドですが、もっと高度な状況については、この記事をご覧ください。Better way to find control in ASP.NET

また、javascript関数datepicker( '')です。最初の手順で見つかったコントロールのクライアントIDを送信するより良い方法があります。 (クライアントID対サーバーについての詳細情報は、この記事を見ての場合:https://msdn.microsoft.com/en-us/library/1d04y8ss.aspx)だから、

、あなたのコードは次のようになります。

//setting the value of the item from the dataset 
string controlId = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString(); 

var control = Page.FindControl(controlId); 
if(control != null) 
{ 
    control.Attributes.Add("onfocus", "datepicker('" + control.ClientID + "');"); 
} 
+0

私はあなたの提案を再作成するときに、変数コントロールでAttributes.Addを使用することができません。 Attributes.Addは利用可能なオプションではありません。 – user3404204

+0

これは、デバッグ時に 'var control'が "null"になっていることが原因である可能性があります。その時点で返された値は 'txtCNo'ではありません。 – user3404204

関連する問題