Я создаю страницу с динамическими элементами управления (также задаю ID элементов управления) в таблице на основе цикла в событии загрузки страницы.
Мне нужно получить доступ к значениям этих динамических элементов управления, чтобы сохранить их в базе данных в случае нажатия кнопки.Теперь, когда я зацикливаюсь на таблице, она дает мне 0 строк таблицы.Во-вторых, я также пытаюсь использовать свойство Find_Control, чтобы найти элементы управления на странице, и оно не дает мне НИЧЕГО для каждого элемента управления.
Есть ли что-то, чего мне не хватает, например runat = server?Или есть другой подход для доступа к этим элементам управления при нажатии кнопки.
Код ASP.net ниже
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="Table1" runat="server">
</asp:Table>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
Ниже VB.net (просто цикл 10 раз, нечетные строки с текстомполя, четные строки с выпадающим списком в качестве примера)
Option Strict On
Option Explicit On
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack = False Then
Dim li As Integer = 0, lj As Integer = 0
For li = 0 To 9
Dim loR As New TableRow
'-------------------------------
Dim loC1 As New TableCell
loC1.Text = "Caption " & CStr(li + 1).PadLeft(2, CChar("0")) & " :"
loR.Cells.Add(loC1)
'-------------------------------
Dim loC2 As New TableCell
Select Case (li + 1) Mod 2
Case 0
Dim loDD As New DropDownList
loDD.ID = "ctl" & CStr(li + 1).PadLeft(2, CChar("0"))
For lj = 0 To li + 3
loDD.Items.Add("List " & CStr(li + 1).PadLeft(2, CChar("0")) & " : Value " & CStr(lj + 1).PadLeft(2, CChar("0")))
Next
loC2.Controls.Add(loDD)
Case 1
Dim loT As New TextBox
loT.ID = "ctl" & CStr(li + 1).PadLeft(2, CChar("0"))
loC2.Controls.Add(loT)
End Select
loR.Cells.Add(loC2)
'-------------------------------
Table1.Rows.Add(loR)
Next
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim li As Integer = 0
For li = 0 To Table1.Rows.Count - 1
Response.Write("")
Next
End Sub
End Class