На самом деле я создаю веб-шаблон с использованием asp.net и c #.на моей странице user control
мне нужно создать таблицу динамически.я просто читаю данные из XML-файла, затем извлекаю имя и количество столбцов и строк каждой таблицы.в то время как я создаю таблицу, я назначаю имя и идентификатор каждой ячейке.потому что у меня есть одна строка, включая некоторые textbox
для добавления данных в базу данных.но после создания таблицы я не могу получить доступ к ячейкам textbox
на основе идентификатора, чтобы получить их данные и вставить их в базу данных.мой код динамической таблицы:
public void CreateAddDynamicTable()
{
XmlDocument xDocRead = new XmlDocument();
xDocRead.Load(Server.MapPath("ModuleTemp.xml"));
string xModuleName = hid_ChooseModule.Value;
XmlNode xColCounter = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/List");
int colCount = xColCounter.ChildNodes.Count;
int nonPkCounter = 0;
string[] nonPrimaryKey = new string[100];
string[] nonPkNewDataTemp = new string[100];
for (int i = 1; i <= colCount; i++)
{
if (xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/Add/TableColumn" + i).Attributes.GetNamedItem("IsPrimaryKey").Value == "N")
{
nonPrimaryKey[nonPkCounter] = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/Add/TableColumn" + i).Attributes.GetNamedItem("Name").Value;
nonPkCounter++;
}
}
ph_Uc_AddModule.Controls.Clear();
// Fetch the number of Rows and Columns for the table
// using the properties
int tblRows = nonPkCounter;
int tblCols = 2;
// Create a Table and set its properties
Table tbl = new Table();
// Add the table to the placeholder control
ph_Uc_AddModule.Controls.Add(tbl);
// Now iterate through the table and add your controls
for (int i = 0; i < tblRows; i++)
{
TableRow tr = new TableRow();
for (int j = 0; j < tblCols; j++)
{
TableCell tc = new TableCell();
Label td_Add_Header = new Label();
TextBox td_Add = new TextBox();
if (j == 0)
{
td_Add_Header.Text = nonPrimaryKey[i];
td_Add_Header.ID = "lb" + (i + 1) + "_header_AddModule";
// Add the control to the TableCell
tc.Controls.Add(td_Add_Header);
tc.CssClass = "td_Header_AddModule";
}
else
{
td_Add.Text = "";
td_Add.ID = "tb" + (i + 1) + "_AddModule";
// Add the control to the TableCell
tc.Controls.Add(td_Add);
tc.CssClass = "td_Tb_AddModule";
}
// Add the TableCell to the TableRow
tr.Cells.Add(tc);
}
// Add the TableRow to the Table
tbl.Rows.Add(tr);
}
}
моя страница управления пользователем, которая содержит PlaceHolder
, выглядит следующим образом:
<asp:Panel ID="pn_Uc_TModule" runat="server">
<asp:Table runat="server" ID="table_Uc_TModule" CssClass="table_Uc_TModule" Width="100%">
<asp:TableRow runat="server" VerticalAlign="Top" Height="50px">
<asp:TableCell runat="server">
<asp:Button runat="server" Text="" CssClass="btn_Add_Active" OnClick="btn_AddNew_Click" />
<asp:Button ID="btn_Cancel_NewItem" runat="server" Text="" CssClass="btn_Cancel_New" OnClick="btn_Cancel_AddNew" Visible="false" />
<asp:Table runat="server" ID="table_Uc_AddModule" Visible="false">
<asp:TableRow runat="server">
<asp:TableCell runat="server" >
<asp:PlaceHolder ID="ph_Uc_AddModule" runat="server">
</asp:PlaceHolder>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow1" runat="server">
<asp:TableCell runat="server" CssClass="td_Tb_AddModule" HorizontalAlign="Center">
<asp:Button ID="btn_Insert" runat="server" OnClick="Uc_AddModule_ItemInsert" Text="" CssClass="btn_Add" />
<asp:Button ID="btn_Cancel" runat="server" OnClick="Uc_AddModule_Clear" Text="" CssClass="btn_Clear" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:Panel>
Я использую метод ниже в моей функции вставки вкод для доступа к данным, вставленным в textbox
:
for (int i = 1; i <= nonPkCounter; i++)
{
TextBox textBox = (ph_Uc_AddModule.FindControl("tb" + i + "_AddModule")) as TextBox;
}
Я пытался pn_Uc_TModule.FindControl("tb" + i + "_AddModule")
, а также This.ph_Uc_AddModule.FindControl("tb" + i + "_AddModule")
, но все еще не могу получить данные texbox
для вставки в базу данных.не могли бы вы подсказать мне, как это сделать.ценим ваше внимание.