簡體   English   中英

如何在按鈕中動態在ASP.NET中向表添加行和列

[英]How to add rows and columns to a table in asp.net dynamically in button

我打算創建一個動態表,但條件是每次單擊按鈕時都可以向該表添加一行。

我正在使用以下代碼,但是它不起作用。

第一次單擊按鈕運行,但是第二次必須添加到第二行,它沒有這樣做,並且僅將一行添加到前一行。

頁內

DropDownList[] dlsathetasilat = new DropDownList[50];
    Label[] lblradif = new Label[50];
    TextBox[] txtreshtetahsili = new TextBox[50];
    TextBox[] txtmoasese = new TextBox[50];
    TextBox[] txtcity = new TextBox[50];
    TextBox []txtdateakhz = new TextBox[50];
    CheckBox[] chmadrakmoadel = new CheckBox[50];

    TableCell []tc = new TableCell[7];

   static int i=0;

在按鈕中:

TableRow tr = new TableRow();
           lblradif[i] = new Label();
           lblradif[i].Text = (i + 1).ToString();
           lblradif[i].CssClass = "lbl";
           dlsathetasilat[i] = new DropDownList();
           dlsathetasilat[i].Items.Add("دیپلم");
           dlsathetasilat[i].CssClass = "dl";

           txtreshtetahsili[i] = new TextBox();
           txtreshtetahsili[i].CssClass = "dl";
           txtmoasese[i] = new TextBox();
           txtmoasese[i].CssClass = "dl";
           txtdateakhz[i] = new TextBox();
           txtdateakhz[i].CssClass = "dl";
           txtcity[i] = new TextBox();
           txtcity[i].CssClass = "dl";
           chmadrakmoadel[i] = new CheckBox();
           chmadrakmoadel[i].CssClass = "d2";


           for (int k = 0; k < 7; k++)
               tc[k] = new TableCell();

           tc[0].Controls.Add(lblradif[i]);
           tc[1].Controls.Add(dlsathetasilat[i]);
           tc[2].Controls.Add(txtreshtetahsili[i]);
           tc[3].Controls.Add(txtmoasese[i]);
           tc[4].Controls.Add(txtcity[i]);
           tc[5].Controls.Add(txtdateakhz[i]);
           tc[6].Controls.Add(chmadrakmoadel[i]);

           for (int j = 0; j < 7; j++)
               tr.Controls.Add(tc[j]);

           Table1.Rows.Add(tr);

           i++;

這是PostBack和ViewState的問題。 ASP.NET不會將ViewState保存為Table控件。 這意味着如果要在回發期間保留表數據,則需要在每個回發中綁定表。

您可以做的就是將表值保存在ViewState對象中。 然后編寫一個使用ViewState對象創建表的函數。 在按鈕的on click事件中,向視圖狀態對象添加其他行,然后再次調用該函數以重新創建表。 這看起來很簡單,但是主要的問題是,如果表中有其他控件,例如TextBox,DropDownList等,則它們在回發后不會保留值,因為我們每次都在重新創建表。

通過查看所有這些問題,我會考慮使用諸如Repeater之類的DataBound控件,您可以使用該控件根據要創建的行數來構建表。 您也可以根據需要處理動態控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM