2012-04-30 6 views
3

行追加ボタンをクリックするたびに行を追加する動的な表を作成しています。 ボタンをプログラムで作成し、それをテーブルヘッダーに追加します。 そのボタンの下に同じ行に削除行ボタンもあります。ASP.NETプログラムでイベントを含むボタンを追加する

ボタンをクリックすると問題が発生しますが、イベントが呼び出されていません。ボタンを正しく作成していますか?もしそうでなければ、どうすればいいのですか?私の場合、問題が何であるか知っていますか?

領域Add_Table_Header
TableHeaderCell thcOne = new TableHeaderCell(); 
    TableHeaderCell thcTwo = new TableHeaderCell(); 
    TableHeaderCell thcThree = new TableHeaderCell(); 
    TableHeaderCell thcrFour = new TableHeaderCell(); 
    TableHeaderCell thcFive = new TableHeaderCell(); 
    TableCell thcRowAction = new TableCell(); //THIS IS THE COLUMN WITH THE 
               //ADD BUTTON 

    thcOne.Text = "Who"; 
    thcTwo.Text = "Date Started"; 
    thcThree.Text = "Date Ended"; 
    thcrFour.Text = "Causes?"; 
    thcFive.Text = "Result"; 

      //HERE IS WHERE I CREATE AND ADD THE BUTTON 

    Button addRowButton = new Button(); 
    addRowButton.Text = "Add Row"; 
    addRowButton.Click += new EventHandler(this.AddNewRow_Click); 
    thcRowAction.Controls.Add(addRowButton); 

    TableHeaderRow headerRow = new TableHeaderRow(); 
    headerRow.Cells.Add(thcOne); 
    headerRow.Cells.Add(thcTwo); 
    headerRow.Cells.Add(thcThree); 
    headerRow.Cells.Add(thcrFour); 
    headerRow.Cells.Add(thcFive); 
    headerRow.Cells.Add(thcRowAction); 

    table.Rows.Add(headerRow); 

    #endregion 


protected void AddNewRow_Click(object sender, EventArgs e) 
    { 
     if (ViewState["RowsCount"] != null) 
     { 
      numOfRows = Convert.ToInt32(ViewState["RowsCount"]); 
      GenerateTable(numOfRows); 
     } 
    } 

もう一度、ボタンが表示されますが、それは正しいイベントメソッドを入力しません。

<asp:Button ID="BTNAdd" runat="server" Text="Add New Row" OnClick="AddNewRow_Click" /> 

イベントは完全に罰金を登録して動作します:私はそれが宣言のようなやり方でお願いして時間:)

ため 感謝。

NEW INFO: 削除ボタンも表示されていますが、イベントの種類は登録しませんでしたが、クリックすると、行追加ボタンとまったく同じことができますマスターページまたは別のソースから、最初に何をすべきか、またはデフォルトで何をすべきかがわかります。

THANKS :)

答えて

3

のViewStateとイベントが適切にトリガーされるようにするには、ページのInitイベントハンドラで動的なコントロールを追加する必要があります。

protected void Page_Init(object sender, EventArgs e)  
    {   
     Button btn = new Button();   
     btn.ID = "btnTest";   
     btn.Text = "I was dynamically created";   
     btn.Click += new EventHandler(btnTest_Click);   
     Panel1.Controls.Add(btn);  
    } 

はこれをやって試してみてください

関連する問題