asp.netのカスタムコントロールは初めてです。画像ボタンのクリックイベントハンドラーをアタッチするときに問題が発生します。サーバー制御用に次のコードを記述しました。
ImageButton _imgbtn;
TextBox txtOutput;
Label _lblname;
public ImageButton searchBtn
{
get { return _imgbtn; }
set { _imgbtn = value; }
}
public Label lblName
{
get { return _lblname; }
set { _lblname = value; }
}
protected override void OnInit(EventArgs e)
{
txtOutput = new TextBox();
txtOutput.Width = 180;
txtOutput.ID = "ResultOutput";
txtOutput.Enabled = false;
Controls.Add(txtOutput);
searchBtn = new ImageButton();
Controls.Add(searchBtn);
lblName = new Label();
lblName.Text = "";
Controls.Add(lblName);
}
protected override void RenderContents(HtmlTextWriter output)
{
//base.Render(output);
txtOutput.RenderControl(output);
searchBtn.RenderControl(output);
lblName.RenderControl(output);
}
このカスタムコントロールを、次のようにレジスタタグを使用して.aspxページに追加しました。
<%@ Register TagPrefix="mycontrol" Namespace="MyControl" Assembly="MyControl" %>
aspx.csファイルで、プロパティ値を次のように指定します。
CustomControl mycustctrol;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
mycustctrol = myCust as CustomControl;
mycustctrol.searchBtn.ImageUrl = "~/Images/searchicon.png";
mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent"
}
}
public void GenerateClickEvent(object sender, EventArgs args)
{
mycustctrol.lblName.Text = "clicked";
}
このアプリケーションを実行した後、次のエラーが発生します。
'GenerateClickEvent'は未定義です
私が間違いをしたところ。のようなイベントを宣言してみましたがpublic event EventHandler GenerateClickEvent;
、それ以上進むことができません。これを実現する方法を教えてください。
また、.aspxページのjavascript関数を次のように試してみました
function GenerateClickEvent() {
alert('clicked');
}
alert('clicked');
発砲していません。