2012-01-14 34 views
0

私は "追加"ボタンをクリックすると、動的に作成された4つのセルが追加されます動的テーブルを作成する最初のセルconatins動的に作成されたチェックボックス、動的に 割り当てられたIDのは、私は、行のいずれかのチェックボックスを選択し、particluar選択行が削除され、テーブル数も減少したが、再びとき、私れ、削除ボタンをクリックしたときに、私は別の削除ボタン、 を持って動的に作成されたコントロールのIDはasp.net

Table Table1 = new Table(); 
    TableRow row = new TableRow(); 
    TableCell cell1 = new TableCell(); 
    TableCell cell2 = new TableCell(); 
    TableCell cell3 = new TableCell(); 
    TableCell cell4 = new TableCell(); 
    CheckBox checkbox = new CheckBox(); 
    TextBox textbox1 = new TextBox(); 
    TextBox textbox2 = new TextBox(); 
    TextBox textbox3 = new TextBox(); 
    row.ID = "row" + Table1.Rows.Count; 
    cell1.ID = "cell1" + Table1.Rows.Count; 
    cell2.ID = "cell2" + Table1.Rows.Count; 
    cell3.ID = "cell3" + Table1.Rows.Count; 
    cell4.ID = "cell4" + Table1.Rows.Count; 
    checkbox.ID = "ck1" + Table1.Rows.Count; 
    textbox1.ID = "tb1" + Table1.Rows.Count; 
    textbox2.ID = "tb2" + Table1.Rows.Count; 
    textbox3.ID = "tb3" + Table1.Rows.Count; 

です追加ボタンをクリックしてください。このIDを持つ既存の行がこの問題で親切に助けてくれるため、行を作成できませんなどのエラーが発生しました。

例: 6行vth id: "row1"、 "row2" 「row3」、「row4」、「row5」、「row6」

im deleteting row3、row5、row6、今現在の行はrow1、row2、row4です。 次に、別の行を追加しています。「新しい行は追加できません。行vth id row4はすでに存在しています」というエラーが表示されています。

答えて

0

行を削除するたびに、すべての行/セルを元に戻すことができます。

または、MaxRowなどのカウンタを使用してセッション状態で保存し、新しい行でRows.Countの代わりに使用することができます。

0

テーブルに行を追加しないでください(少なくともコードには表示されません)、table1.rows.countは追加される次の行が増えません。だから、おそらくエラーメッセージが表示されます。

このように各要素にIDを割り当てる必要があると感じる理由は、自分自身に尋ねることがより重要になると思います。コレクションインデクサーとFindControl()を使用すると、作業したい要素を見つけるのがはるかに管理しやすくなると思います。このメソッドを使用する場合、各要素はそのコンテナ内で同じサーバー側IDを持つことができます。

このようにして、文字列ベースのIDを増やすのではなく、intインデクサーを使用して数学的にテーブルを操作することができます。例えば

(おそらくforループで):

(TextBox)WorkingControl = Table1.Rows(i).Cells(j).FindControl("tb1"); WorkingControl.Text = 'Hello';

私のC#を言い訳してください、それは少し荒いです。うまくいけば、アイデアを得ることができます。

関連する問題