asp.net 如何遍历datatable并添加在服务器上运行的textboxes/textarea

b09cbbtk  于 2023-04-22  发布在  .NET
关注(0)|答案(1)|浏览(151)

我目前正在尝试通过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 />";

这适用于渲染文本区域,但我不能想出一种方法来访问数据。

nnsrf1az

nnsrf1az1#

以下是服务器端控件在ASP.NET中的工作方式:

第一步.您的Web应用将控件添加到页面的控件列表中。
第二步. ASP.NET管道呈现页面,它迭代所有控件并要求它们输出HTML。然后每个控件输出其HTML。管道将所有这些HTML放在一起并将其发送回客户端。这一步自动发生。

您试图通过操作步骤2中输出的HTML来添加控件。这对步骤1中的控件没有任何影响。因此它不会工作。
如果你想在页面上添加控件,我可以给予你两个选择:
1.将它们的标记添加到一个重复项,例如repeater控件。重复器允许您定义重复的标记部分,您可以将控件放在那里,框架将自动为它们制作足够的副本。
1.您可以使用c#代码自己添加控件,例如使用Controls.Add()。请参阅this answer以获取示例。

相关问题