0

非常に単純なコードでコード生成されたテーブルを使用して、asp.netで演習を行っています。

protected void btnAceptar_Click(object sender, EventArgs e)
    {
        tblGenerar.Controls.Clear();            

        for(int i = 0; i < Convert.ToInt32(txtRows.Text);i++)
        {
            TableRow rowNew = new TableRow();
            tblGenerar.Rows.Add(rowNew);

            for (int j = 0; j < Convert.ToInt32(txtCols.Text);j++ )
            {
                TableCell cellNew = new TableCell();
                rowNew.Cells.Add(cellNew);
                cellNew.Text = txtTexto.Text;

                if (chkMargen.Checked == true)
                {
                    cellNew.BorderStyle = BorderStyle.Inset;
                    cellNew.BorderWidth = 1;
                }
            }
        }
    }

初めてテーブルに境界線を作成することを選択したときは機能しますが、次に境界線なしでテーブルを生成することを選択したときは、最後に生成されたテーブルの境界線がまだ残っています。追加のセルは境界線なしで表示されます。

Controls.Clear()を使用している場合、なぜこれが発生するのですか?どうすれば解決できますか?
ありがとう。

4

1 に答える 1

0

コード内にelse条件を入れます。

        else
        {
            cellNew.BorderStyle = BorderStyle.None;
            cellNew.BorderWidth = 0;
        }

または、次のようなことを行うことができます。

cellNew.BorderStyle = BorderStyle.None;
                    if (chkMargen.Checked == true)
                    {
                        cellNew.BorderStyle = BorderStyle.Inset;
                        cellNew.BorderWidth = 1;
                    }

そして、これで完了です。

これは、テーブルが生成されると、それらに変更を適用できないためです。そのためには、最初に境界線を明示的に削除してから、チェックボックスがオンになっている場合に適用する必要があります。

于 2013-01-05T02:08:06.630 に答える