ボタンとドロップダウンを含むC#サーバーコントロールを持っています ボタンをクリックしている間にドロップダウンselectedindexを応答したい場合は をクリックしてください。ページレベル(ASPX)のイベントハンドラを作成し、しかし、私は、コントロールの内部でそれをコーディングし、DLLとしてコンパイルしたいサーバーコントロールでドロップダウンとボタン、および独自のイベントをトリガー
私の流れは次のとおりです。 コントロールクラスがロード オーバーライドCreateChildControlsのは、追加することで、ボタンやドロップダウンを構築サーバーコントロールへのボタンをクリックしてクリックイベントをバインドします RenderControlをオーバーライドしてドロップダウンをテーブルに追加し、ボタンをレンダリングします
は最終的に私は、ボタンイベントをクリックすることができることを見出し、しかし、私はここに第二1
を選択すると、それだけで、ドロップダウン選択した項目を取得するカントコードです:
public class ServerControl1 : WebControl, INamingContainer
{
public ServerControl1()
{
_oBtn = new Button();
_oBtn.ID = "btn";
_oBtn.Text = "Click Me";
_oBtn.Click += new EventHandler(_oBtn_Click);
_ddl = new DropDownList();
_ddl.ID = "ddl";
_ddl.Items.add(new ListItem("xxxxxxxx", "xxxxxxxx"))
_ddl.Items.add(new ListItem("yyyyyyy", "yyyyyyy"))
}
protected override void CreateChildControls()
{
this.Controls.Add(_oBtn);
base.CreateChildControls();
}
public override void RenderControl(HtmlTextWriter writer)
{
AddAttributesToRender(writer);
Table m_oTable = new Table();
TableRow m_oRow;
TableCell m_oCell;
m_oCell = new TableCell();
m_oCell.Controls.Add(_ddl);
m_oRow.Cells.Add(m_oCell);
m_oTable.Rows.Add(m_oRow);
m_oTable.RenderControl(writer);
_oBtn.RenderControl(writer);
}
protected void _oBtn_Click(object sender, EventArgs e)
{
if (_ddl.SelectedIndex != 0)
{
Page.Response.Redirect(Url + "&f0=" + _ddl.SelectedIndex);
}
else
{
Page.Response.Write("nonononon");
}
}
}