2016-03-22 23 views
3

私の問題は、各セルにリンクボタンが含まれているテーブルを動的に作成することです。クリックすると、そのセルをテーブルから削除することになっています。 (それよりも少し複雑ですが、回避策はありませんと言っているだけです)私はこれについていくつかの記事を読んでおり、通常はコントロールがあまりにも(再)ページの読み込み前に作成されます。私は両方のページのロードとページのinitとpre initからsetCellContentを実行するメソッドを実行しようとしましたが、_lnkBntRemoveSlotFromTable_Clickメソッド はlinkbuttonsがクリックされると呼び出されません。そして、私はコントロールが作成/再作成されたとき以外に何か間違っているのか不思議に思っています。C#で動的に作成されたリンクボタン

private TableCell setCellContent(string day, DateTime timeOfDay){ 
    TableCell newCell = new TableCell(); 
    LinkButton lb = new LinkButton(); 
    lb.ID = (++global_counter_id).ToString(); 
    lb.Text = timeOfDay.ToShortTimeString(); 
    lb.CommandArgument = timeOfDay.ToString(); 
    lb.Command += new CommandEventHandler(_lnkBntRemoveSlotFromTable_Click); 
    newCell.Controls.Add(lb); 
    return newCell; 
} 

私が呼ばれるようにしたい方法:各セルについては

表はで構成され、これが行われているものである

public void _lnkBntRemoveSlotFromTable_Click(object sender, CommandEventArgs e) 
{ 
    //1. Make changes to the table 
} 

しかし、メソッドが呼び出されることはありません。

+0

テーブル自体はすべてのポストバックで再作成されますか? – ConnorsFan

+0

はい。テーブルとすべてのリンクボタンは、必要に応じて作成されます。 –

+0

LinkBut​​tonをクリックしたら、それは消えますか? – ConnorsFan

答えて

1

最後にそれが機能しました。いくつかの変更が働いた。テーブルが作成されたときやIDがどのように作成されたかは、当然のことでした。他の人のためのアドバイスはここでは、動作時の例です..そして、ダイナミックコントロールのIDがページの読み込み全体で同じであることを確認してください。

public partial class _default : System.Web.UI.Page 
    { 
     static int i = 0; 

     protected override void OnInit(EventArgs e) 
     { 
     base.OnInit(e); 
      LinkButton lb = new LinkButton(); 
      lb.ID = "id"; 
      lb.Text = "Click me"; 
      lb.CommandArgument = "argument"; 
      lb.Command += new CommandEventHandler(method_to_call); 
      this.Panel.Controls.Add(lb); 
     } 

     private void method_to_call(object sender, CommandEventArgs e) 
     { 
      i++; 
      this.Label.Text = i.ToString(); 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

    } 
関連する問題