我目前正在尝试通过DataTable循环,并在页面加载时根据从数据库返回的数据向页面添加元素。我目前有业务逻辑用于检索数据并插入div/header,但不确定如何添加asp文本框,以便将数据返回到服务器。
我想尝试复制文本框的通常逻辑(或接近它),如下所示:
//ascx
<asp:TextBox runat="server" ID="txt_Textbox1" MaxLength="50" Width="180"></asp:TextBox>
//ascx.cs
string text = txt_Textbox1.Text;
以下是我目前掌握的情况
id = "....."
div_contents.InnerHtml = GetContents(id);
protected static string GetBuildingCode(Guid ItemGUID)
{
string content = string.Empty;
DataTable dt = new DataTable();
//Business Logic For Getting Data
content += "<div>"
foreach (DataRow dr in dt)
{
content += "<div>"
content += "<h3>" + dr.Name + "</h3>"
//Add Textbox or Textarea here
content += "</div>"
}
content += "<div>"
return content;
}
我尝试添加如下文本区域:
content += "<br /><textarea ID=\"txt_" + dr.ItemGUID + "\" MaxLength=\"1000\" style=\"width:90%; height:150px\"></textarea><br />";
这适用于渲染文本区域,但我不能想出一种方法来访问数据。
1条答案
按热度按时间nnsrf1az1#
以下是服务器端控件在ASP.NET中的工作方式:
第一步.您的Web应用将控件添加到页面的控件列表中。
第二步. ASP.NET管道呈现页面,它迭代所有控件并要求它们输出HTML。然后每个控件输出其HTML。管道将所有这些HTML放在一起并将其发送回客户端。这一步自动发生。
您试图通过操作步骤2中输出的HTML来添加控件。这对步骤1中的控件没有任何影响。因此它不会工作。
如果你想在页面上添加控件,我可以给予你两个选择:
1.将它们的标记添加到一个重复项,例如repeater控件。重复器允许您定义重复的标记部分,您可以将控件放在那里,框架将自动为它们制作足够的副本。
1.您可以使用c#代码自己添加控件,例如使用
Controls.Add()
。请参阅this answer以获取示例。