0

データベースに保存されているテキスト ボックスの ID を動的に設定しています。検索のパラメーターを決定するデータセットから値を引き出すときに、文字列として設定しています。

クライアント 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 + "');");

「'string' には、'string' の最初の引数を受け入れる 'ClientID' の定義が含まれていません (using ディレクティブまたはアセンブリ参照がありませんか?)」というエラーが表示されます。

別の変数を HtmlControl に変換または設定しようとすると、ClientID は次のように使用できます。

HtmlControl txtCode = textCode;

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

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

ご提案いただきありがとうございます。

4

1 に答える 1

0

コメントの後の詳細な回答.. asp.netサーバーコントロールIDをデータベースに保存しているようで、データベースから取得した後、ページ上のコントロールのID(「txtCNo」)を持つtextCode変数を取得しました。

したがって、最初のステップは、ページ上でこの ID を持つコントロールを見つけることです。簡単な方法は Page.FindControl(...) メソッドですが、より高度な状況については、次の記事を参照してください: ASP.NET でコントロールを見つけるより良い方法

また、javascript 関数 datepicker('') を呼び出して onfocus イベントを追加しようとしていることに気付きました。最初のステップで見つかったコントロールのクライアント ID を送信するより良い方法があります。(サーバー 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 + "');");
}
于 2016-04-07T20:20:56.010 に答える