[英]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.