動的コントロールは初めてですが、これまで、グリッドビューのテンプレート フィールドでそれらを正常に作成してきました。最近、ハイパーリンクからリンク ボタンに切り替え、いくつかの変更を加える必要がありましたが、まだ機能していません。
私のページには次のコードがあります(顕著な部分に要約されています)
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
...
...
TemplateField tf = new TemplateField();
tf.HeaderText = "Action";
tf.ItemTemplate = new AssignPage.MyTemplate(..., mylb);
GridView1.Columns.Add(tf);
protected void Page_PreInit(object sender, EventArgs e)
{
LinkButton lb = new LinkButton();
lb.Text = "AssignAll";
lb.Command += new CommandEventHandler(AssignAll_Click);
lb.CommandName = "XXX";
this.mylb = lb;
protected void AssignAll_Click(object sender, CommandEventArgs e)
{
string[] arg = new string[2]; // BREAK POINT HERE
arg = e.CommandArgument.ToString().Split(';');
...
...
Response.Redirect("BaseAndRepeats.aspx?id=" + r.Event.ID);
私が持っているテンプレートクラスで
LinkButton lb;
public MyTemplate(..., LinkButton _lb)
{
...
lb = _lb;
...
public void InstantiateIn(System.Web.UI.Control container)
{
...
...
// various conditional statements
lb.CommandArgument = mylist[rowCount].ReqtID.ToString() + ";" + mylist[rowCount].RotaUser;
container.Controls.Add(lb);
...
ハンドラーのブレークポイントには到達しません
リンクボタンをクリックすると、リンクボタンがグリッドに表示され、Page_PreInit と Page_Load への呼び出しがあり、予想どおりポストバックです。ただし、AssignAll_Click が呼び出されることはありません。
ブラウザのフッターでは、ボタンリンクにカーソルを合わせると「javascript: __dooPsotabck(...」と表示されます