Итак, у меня есть эта панель внутри td таблицы.Невозможно получить доступ к динамическим элементам Textbox/DropDown в динамической таблице внутри панели
В этой панели я создаю динамическую таблицу с текстовым полем и выпадающим элементом управления при нажатии кнопки.
Проблема в том, что при попытке получить элементы управления я НЕИСПРАВЛЯЮ. Я проверил буквально, как более 25 веб-сайтов, и не смог найти достойного решения или чего-то подобного моему.
Вот код, в котором я пытаюсь получить доступ к элементам управления. Он находится внутри обработчика событий кнопки.
for (int i = 0; i < ClickCount; i++)
{
//Control myControls = Page.FindControl("table1");
//Panel myPanel = (Panel)mainTable.FindControl("Panel1");
//Table myTable = (Table)myPanel.FindControl("table1");
string FirstName = null;
string LastName = null;
string Age = null;
string PCountry = null;
string PCommittee = null;
TextBox txtF = (TextBox)Panel1.FindControl("TextBoxF" + i.ToString());
FirstName = txtF.Text;
TextBox txtL = (TextBox)Panel1.FindControl("TextBoxL" + i.ToString());
LastName = txtL.Text;
TextBox txtA = (TextBox)Panel1.FindControl("TextBoxA" + i.ToString());
Age = txtA.Text;
DropDownList ddlPCountry = (DropDownList)myTable.FindControl("ddlPCountry" + i.ToString());
PCountry = ddlPCountry.SelectedValue;
DropDownList ddlPCommittee = (DropDownList)myTable.FindControl("ddlCommittee" + i.ToString());
PCommittee = ddlPCommittee.SelectedValue;
string groupInsert = "insert into GroupUser (GroupUserID, FirstName, LastName, Age, PreferredCountry, PreferredCommittee) ";
groupInsert += "values (@GroupUserID, @FirstName, @LastName, @Age, @PreferredCountry, @PreferredCommittee);";
SqlCommand group = conn.CreateCommand();
group.CommandType = CommandType.Text;
group.CommandText = groupInsert;
group.Parameters.Add(new SqlParameter("@GroupUserID", ID));
group.Parameters.Add(new SqlParameter("@FirstName", FirstName));
group.Parameters.Add(new SqlParameter("@LastName", LastName));
group.Parameters.Add(new SqlParameter("@Age", Age));
//group.Parameters.Add(new SqlParameter("@PreferredCountry", ddlPCountry.SelectedValue));
//group.Parameters.Add(new SqlParameter("@PreferredCommittee", ddlPCommittee.SelectedValue));
int temp = group.ExecuteNonQuery();
}
Response.Redirect("StartPage.aspx");
Вот создание элементов управления в другом обработчике событий кнопки.
Table table = new Table();
table.ID = "table1";
for (int i = 0; i < ClickCount; i++)
{
TableRow row1 = new TableRow();
TableRow row2 = new TableRow();
TableRow row3 = new TableRow();
TableRow row4 = new TableRow();
TableRow row5 = new TableRow();
TableRow row6 = new TableRow();
TableRow row7 = new TableRow();
TextBox TxtBoxF = new TextBox();
TextBox TxtBoxL = new TextBox();
TextBox TxtBoxA = new TextBox();
DropDownList ddlPCountry = new DropDownList();
DropDownList ddlPCommittee = new DropDownList();
Label lblF = new Label();
Label lblL = new Label();
Label lblA = new Label();
Label lblPCountry = new Label();
Label lblPCommittee = new Label();
TxtBoxF.ID = "TextBoxF" + i.ToString();
TxtBoxL.ID = "TextBoxL" + i.ToString();
TxtBoxA.ID = "TextBoxA" + i.ToString();
ddlPCountry.ID = "ddlPCountry" + i.ToString();
ddlPCommittee.ID = "ddlPCommittee" + i.ToString();
lblF.ID = "LabelF" + i.ToString();
lblL.ID = "LabelU" + i.ToString();
lblA.ID = "LabelA" + i.ToString();
lblPCountry.ID = "LabelPCountry" + i.ToString();
lblPCommittee.ID = "LabelPCommittee" + i.ToString();
lblF.Text = "First Name: ";
lblL.Text = "Last Name :";
lblA.Text = "Age: ";
lblPCountry.Text = "Preferred Country: ";
lblPCommittee.Text = "Preferred Committee: ";
ddlPCountry.DataSource = countryDt;
ddlPCountry.DataValueField = "CountryID";
ddlPCountry.DataTextField = "CountryName";
ddlPCountry.DataBind();
ddlPCommittee.DataSource = committeeDt;
ddlPCommittee.DataValueField = "CommitteeID";
ddlPCommittee.DataTextField = "CommitteeName";
ddlPCommittee.DataBind();
TxtBoxF.Attributes.Add("runat", "server");
TxtBoxL.Attributes.Add("runat", "server");
TxtBoxA.Attributes.Add("runat", "server");
ddlPCountry.Attributes.Add("runat", "server");
ddlPCommittee.Attributes.Add("runat", "server");
for (int a = 0; a < 2; a++)
{
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(lblF);
cell2.Controls.Add(TxtBoxF);
row1.Controls.Add(cell1);
row1.Controls.Add(cell2);
}
for (int b = 0; b < 2; b++)
{
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(lblL);
cell2.Controls.Add(TxtBoxL);
row2.Controls.Add(cell1);
row2.Controls.Add(cell2);
}
for (int c = 0; c < 2; c++)
{
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(lblA);
cell2.Controls.Add(TxtBoxA);
row3.Controls.Add(cell1);
row3.Controls.Add(cell2);
}
for (int d = 0; d < 2; d++)
{
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(lblPCountry);
cell2.Controls.Add(ddlPCountry);
row4.Controls.Add(cell1);
row4.Controls.Add(cell2);
}
for (int f = 0; f < 2; f++)
{
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(lblPCommittee);
cell2.Controls.Add(ddlPCommittee);
row5.Controls.Add(cell1);
row5.Controls.Add(cell2);
}
table.Rows.Add(row1);
table.Rows.Add(row2);
table.Rows.Add(row3);
table.Rows.Add(row4);
table.Rows.Add(row5);
}
Panel1.Controls.Add(table);
Panel1.Controls.Add(new LiteralControl("<br />"));
Panel1.Controls.Add(new LiteralControl("<br />"));
conn.Close();
Вот ASPX:
<body>
<form id="form1" runat="server">
<div>
<h1>Group Registration</h1>
<br />
<table style="width:100%;" id="mainTable" runat="server">
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>First Name:</td>
<td>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td>Last Name:</td>
<td>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td>Age:</td>
<td>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td class="auto-style1">Contact Number:</td>
<td class="auto-style1">
<asp:TextBox ID="txtContactNumber" runat="server"></asp:TextBox>
</td>
<td class="auto-style1"></td>
</tr>
<tr>
<td>Email Address:</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td>Institute</td>
<td>
<asp:TextBox ID="txtInstitute" runat="server" Width="400px"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td class="auto-style1">Preferred Country:</td>
<td class="auto-style1">
<asp:DropDownList ID="ddlCountry" runat="server">
</asp:DropDownList>
</td>
<td class="auto-style1"></td>
</tr>
<tr>
<td>Preferred Committee:</td>
<td>
<asp:DropDownList ID="ddlCommittee" runat="server">
</asp:DropDownList>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Username:</td>
<td><asp:TextBox ID="txtUsername" runat="server"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td>Password:</td>
<td>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<asp:Button ID="btnAddAnother" runat="server" OnClick="btnAddAnother_Click" Text="Add Another Member" />
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<asp:Button ID="btnRegister" runat="server" Text="Sign Up" OnClick="btnRegister_Click" />
</td>
<td> </td>
</tr>
</table>
</div>
</form>
В HTML страницы иерархия выглядит следующим образом Таблица> панель> Dynamic Table> Dynamic Controls –
Можете ли вы просмотреть исходный код и предоставить код HTML/ASP.NET после загрузки страницы, чтобы мы могли видеть, как и как выглядят ваши объекты? –
Можете ли вы предоставить код ASP.NET для кода? –