下面是C#动态生成控件的代码,但是生成的控件是随机排布的。 如何让动态生成的控件每个都能自动换行

就是说,我希望每动态生成一个控件,就自动换行一次。就是不知道Response.Write("<br/>");写在哪里。在线等。usingSystem;usingSyste... 就是说,我希望每动态生成一个控件,就自动换行一次。就是不知道Response.Write("<br />");写在哪里。在线等。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class test: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//还原控件
RestoreTextBox();
}
//静态变量存储控件列表
static List<TextBox> txtlist = new List<TextBox>();
//控件id
static int id = 1;

protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<br /");
var txt = new TextBox
{
ID = id.ToString(),
Text = "Sample textbox " + id.ToString()
};

this.Panel1.Controls.Add(txt);
txtlist.Add(txt);
//id自增1
id++;
}

/// <summary>
/// 还原控件
/// </summary>
void RestoreTextBox()
{
foreach (var item in txtlist)
{
if (item != null)
{
this.Panel1.Controls.Add(item);
}
}
}

/// <summary>
/// 读取textbox的值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void id2_Click(object sender, EventArgs e)
{
foreach (Control item in Panel1.Controls)
{
if (item is TextBox)
{
Response.Write((item as TextBox).Text + "</br>");
}
}
}
}

页面源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="动态生成textbox控件1.aspx.cs" Inherits="test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="button1" runat="server" Text="创建" onclick="Button1_Click" />
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
<asp:Button ID="id2" runat="server" Text="获取所有值" onclick="id2_Click" />
</div>
</form>
</body>
</html>
展开
 我来答
人形兵器1U
推荐于2017-10-06 · TA获得超过267个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:139万
展开全部
有2个办法。
1.
每次创建新的txt后接着创建一个换行符
???.Controls.Add(new LiteralControl("<br />"));
任何不在服务器上处理的 HTML 标记或者文本字符串都视为 LiteralControl 对象。
2.
你创建TextBox的时候实际上最后生成的html代码是个input框,并且都是以行内元素显示的,所以他不会自动换行。把input设置显示为块元素可以自动提行。
你的代码都不用改,只需要在<head>里面加上
<style type="text/css">
input
{
display:block;
}
</style>
就可以了。
如果某些input框你不希望显示为块元素,那么你可以在所有txt创建的时候加上一个class名称
txt.CssClass = "newtxt";
然后在<head>里面加上
<style type="text/css">
.newtxt
{
display:block;
}
</style>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式