0

ページにドラッグしたASP.NETテーブルコントロールがあります。行と列を動的に作成する必要がありますが、これも行っています。私のテーブルのセルのいくつかはテキストボックスです。テキストボックスの値を変更して変更を保存できるようにしたい。テーブルと同じパネル内にボタンを追加しましたが、テーブルの行をループしようとするとゼロになります。

テーブルが行とセルを記憶していないのはなぜですか?一度データをロードしたので、ボタンを押すたびにテーブルを再構築したくありません。Page_Loadで毎回テーブルを作成することで、データベースサーバーに行ったり来たりすることになると思います。私は本当にこれを避けたいです。

4

1 に答える 1

2

動的に作成されたテーブルを、レンダリング後にフェッチできるビューに保存できます。

SqlConnection con =new  SqlConnection(ConfigurationManager.ConnectionStrings["dbstring"].ConnectionString);

private int ctrName = 0;
Table tableName = null;  

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        tableName = new Table();
        tableName.ID = "tableName";
        Session["tableName"] = tableName;
        ViewState["ctrName"] = ctrName;
    }
    ctrName = (Int32)ViewState["ctrName"];
    tableName = (Table)Session["tableName"];
    pnlName.Controls.Add(tableName);
}
private void GenerateName()
{
    ctrName++;
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    TextBox tb = new TextBox();
    tb.ID = "Txt_Name" + ctrName;
    tb.Width = 150;
    cell.Controls.Add(tb);
    row.Cells.Add(cell);
    tableName.Rows.Add(row);
    Session["tableName"] = tableName;
    ViewState["ctrName"] = ctrName;
}

テーブルの詳細にアクセスするには:

tableName = (Table)Session["tableName"];
于 2012-09-07T09:45:29.030 に答える