/ / Намерете контрол на текстовите полета в ASP динамична таблица - c #, findcontrol, динамичен контрол, динамични таблици

Намерете контрол на текстовите полета в ASP динамична таблица - c #, findcontrol, динамичен контрол, динамични таблици

Динамично създавам таблица, която съдържа текстово поле. Правим го със следния код:

foreach (DataRow row in Score_Sheet.Rows) // Loop over the rows.
{
int rowIndex = Score_Sheet.Rows.IndexOf(row); // Not sure if i need this yet

Label label = new Label();
TextBox txt = new TextBox();
txt.Text = row["Value"].ToString();
txt.ID = row["Risk"].ToString();
label.Text = row["Risk"].ToString() + "      =      ";
rows = new TableRow();
cell = new TableCell();
cell.Controls.Add(label);
cell2 = new TableCell();
cell2.Controls.Add(txt);


rows.Controls.Add(cell);
rows.Controls.Add(cell2);
SSGrid.Controls.Add(rows);


}

това е добавяне на таблица към моята уеб страница чрез този код:

 <asp:Table ID="SSGrid" runat="server"></asp:Table>

таблицата се попълва правилно, но когато се опитам да осъществите достъп до актуализираната стойност от текстовото поле в таблицата, получавам нулево референтно изключение.

Моят код за контрол е:

TextBox txt_any = (TextBox)SSGrid.FindControl("ANY");
string anyany = txt_any.Text;
row1["Value"] = any;

как мога да получа достъп до стойностите, които се актуализират в този текстов кутий?

Благодаря!

Отговори:

0 за отговор № 1

Тъй като използвате динамично генерираниконтролират тук, за да имате достъп до тях или техните ценности, ще трябва да ги пресъздадете, когато страницата е отложена. Това е така, защото динамичните контроли губят състоянието си, след като са били изобразени на изгледа и единственият начин да се играе с тях отново след повторното отстъпление е да ги създадете отново в кода-зад.

Така че, тук трябва просто да пресъздадете таблицата, като използвате кода, който използвате, за да я създадете за първи път.

Можете да поставите този код извън if(!IsPostBack) блок код във вашия Page_Load и това ще ви накара да вървите с това.

Надявам се това да помогне.