如何遍历数据表并添加在服务器上运行的文本框/文本区域

问题描述 投票:0回答:1

我目前正在尝试遍历 DataTable 并在加载时根据从数据库返回的数据向页面添加元素。我目前有用于检索数据和插入 div/标题的业务逻辑,但我不确定如何添加可以将数据返回到服务器的 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 />";

这适用于呈现文本区域,但是我想不出一种访问数据的方法。

c# asp.net telerik ascx
1个回答
0
投票

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

步骤 1。您的 Web 应用程序将控件添加到页面中的控件列表中。

步骤 2。 ASP.NET 管道呈现页面,该页面遍历所有控件并要求它们输出 HTML。然后每个控件输出其 HTML。管道将所有这些 HTML 放在一起并将其发送回客户端。此步骤自动发生。

您正在尝试通过操作在步骤 2 中输出的 HTML 来添加控件。这将对步骤 1 中的控件产生零影响。因此它不会起作用。

如果你想给页面添加控件,我可以给你两个选择:

  1. 将他们的标记添加到重复项,例如 repeater 控件。转发器允许您定义重复标记的一部分,您可以将控件放在那里,框架将自动制作足够的副本。

  2. 您可以使用 C# 代码自行添加控件,例如通过使用

    Controls.Add()
    。有关示例,请参见这个答案

© www.soinside.com 2019 - 2024. All rights reserved.