2012-03-29 24 views
0

私はtablerowをクリック可能にするこのコードを持っています。自動化されたテーブルの結果を返さないIPostbackeventhandler

namespace ClickableTableRow 
{ 
    public class ClickableTableRow : TableRow, IPostBackEventHandler 
    { 

     public ClickableTableRow() 
      : base() 
     { } 

     private EventHandler _click; 
     public event EventHandler Click 
     { 
      add { _click += value; } 
      remove { _click -= value; } 
     } 

     protected virtual void FireClickEvent() 
     { 
      if (_click != null) 
       _click(this, new EventArgs()); 
     } 

     protected override void AddAttributesToRender(HtmlTextWriter writer) 
     { 
      writer.AddAttribute(HtmlTextWriterAttribute.Onclick, 
       Page.ClientScript.GetPostBackEventReference(this, String.Empty)); 
      base.RenderAttributes(writer); 

     } 

     public void RaisePostBackEvent(string eventArgument) 
     { 
      FireClickEvent(); 
     } 
    } 

上記のコードは、私が手動でテーブルを作成する場合はうまく動作しますが、私はその背後にあるコードでテーブルを作成するときにポストバックを発射しているようだが、何のresutsは返されません。私がやっていることが間違っていることはありますか?コードビハインドは次のようになります。

public partial class _Default : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 


    } 

    protected void row1_Click(object sender, EventArgs e) 
    { 
     Messagebox.Text = "message"; 
    } 

    ClickableTableRow.ClickableTableRow row1; 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     Table Table1 = new Table(); 

     TableCell cell1 = new TableCell(); 

     row1= new ClickableTableRow.ClickableTableRow(); 
     row1.Attributes.Add("onmouseover", "this.style.cursor='hand'"); 

     cell1 = new TableCell(); 
     cell1.Text = "llllll"; 
     row1.Cells.Add(cell1); 
     Table1.Rows.Add(row1); 

     row1.Click += new EventHandler(row1_Click); 
     this.pnl2.Controls.Add(Table1); 
     } 
} 
+0

メソッドの最後にbase.OnLoad(e)を移動し、Table1にIDを付けてください –

+0

@Adrian Iftode:あなたのソリューションに感謝します。私はIDを含めるように変更しました。しかし、今はslqクエリで作成されたtr IDを設定することができません。また、良い結果が得られないforループを試しました。 –

答えて

0

このコードをInitまたはPreInitに移動してみてください。これは、動的制御を追加するライフサイクルの典型的な部分です。

関連する問題