c#动态循环TextBox问题,望高手之路!!

love560 2011-01-12 02:23:48
前台主要实现程序:

<asp:Panel ID="Panel1" runat="server" Width="105px">
</asp:Panel>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>


后台代码:

string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox" + i.ToString();
//txt.top = i * 20;
Panel1.Controls.Add(txt);

((Label)this.FindControl("label" + i)).Text = s[i];
}


我现在想问的是,如何自动生成前台的label,并且加在TextBox 的前面?然后在每个TextBox后面加个换行,最终显示方式如下:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><input name="TextBox1" type="text" id="TextBox1" /><br>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><input name="TextBox2" type="text" id="TextBox1" /><br>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><input name="TextBox3" type="text" id="TextBox1" /><br>


希望高手指点哈!100分就这点了!
还有 就是有没有更好的实现方式呀?小弟不胜感谢!
...全文
570 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
lewislam 2012-09-02
  • 打赏
  • 举报
回复
追问:如果想要点击提交按钮后获取这些在后台添加的textbox 的Text,如何实现?
leecyz 2011-03-27
  • 打赏
  • 举报
回复
此贴不错,顶了。

如果使用Input,而不是textbox的话,可以用request.form[""]这个也能实现。
deoing 2011-01-13
  • 打赏
  • 举报
回复
提个小建议,这个使用绑定的方式是否会更方便?
Hertz_liu 2011-01-13
  • 打赏
  • 举报
回复
你可以在大Panel里先加三个小Panel,然后每个小Panel里面,分别加入一个Label和一个TextBox
Panel与Panel之间是会自动换行的
liaoyukun111 2011-01-13
  • 打赏
  • 举报
回复
看来都很喜欢这个功能
yixian2007 2011-01-13
  • 打赏
  • 举报
回复
PlaceHolder1.Controls.Add(lbControl);
PlaceHolder1.Controls.Add(imageurl);
PlaceHolder1.Controls.Add(lbControlEnd);

这里是向控件中添加控件的,就是后台编程添加控件
yixian2007 2011-01-13
  • 打赏
  • 举报
回复
imageurl.Width = 100 ;
imageurl.Height = 140;
这里设置高宽。
yixian2007 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 love560 的回复:]
引用 19 楼 yixian2007 的回复:
引用 18 楼 love560 的回复:
C# code

TextBox txt = new TextBox();
txt.Height = "111px;";



这样写为啥不对呀?


不用写px


出错了
CS0029: 无法将类型“string”隐式转换为“System.Web.UI.WebControl……
[/Quote]

受不了你了,不用写双引号。


//private void BindPhoto()
//{
// x_ExamRoom examroom = new x_ExamRoom();
// DataTable dt = examroom.GetExamAddressAllStudentList(yearTermID, examWeek, weekSection, roomID);
// StringBuilder header = new StringBuilder();
// header.Append("<h2>考试地点学生名单(所有课程)</h2>");
// header.Append("<h3>考试地点:" + roomID);
// header.Append("            ");
// header.Append("监考1:                  ");
// header.Append("监考2:                   ");
// header.Append("考试时间:         </h3>");
// int pagenum = 30; //每页30人
// int rownum = 6; //每行6人
// int page = (dt.Rows.Count%pagenum == 0)? dt.Rows.Count / pagenum : dt.Rows.Count / pagenum +1;
// for (int j = 1; j <= page ; j++) //设置分页
// {
// Literal lblTitle = new Literal();
// lblTitle.Text = header.ToString();
// PlaceHolder1.Controls.Add(lblTitle);
// int currentPageNum = (j * pagenum <= dt.Rows.Count) ? pagenum : (dt.Rows.Count - j * pagenum); //获得当前页记录数
// int row = (currentPageNum % rownum == 0) ? currentPageNum / rownum : currentPageNum / rownum + 1; //获得当前页行数
// for (int i = 0; i < row; i++)
// {

// for (int s = 0; s < 6; s++)
// {
// Image imageurl = new Image();
// Literal lbControl = new Literal();
// lbControl.Text = "<div style='float:left;height:190px;width:130px;'>";
// imageurl.ImageUrl = @"../Student/jpg.aspx?StudID=" + Encrypt.EncryptDES(dt.Rows[s+i*rownum+(j - 1) * pagenum]["StudID"].ToString());
// imageurl.Width = 100 ;
// imageurl.Height = 140;
// Literal lbControlEnd = new Literal();
// StringBuilder studinfo = new StringBuilder();
// studinfo.Append(@"<div>");
// studinfo.Append(dt.Rows[s + i * rownum + (j - 1) * pagenum]["StudID"].ToString());
// studinfo.Append("  " + dt.Rows[s + i * rownum + (j - 1) * pagenum]["StudName"].ToString());
// studinfo.Append(@"</div></div>");
// lbControlEnd.Text = studinfo.ToString();
// PlaceHolder1.Controls.Add(lbControl);
// PlaceHolder1.Controls.Add(imageurl);
// PlaceHolder1.Controls.Add(lbControlEnd);
// }
// Literal lbBR = new Literal();
// lbBR.Text = @"<br />";
// PlaceHolder1.Controls.Add(lbBR);
// }
// if (j != page)
// {
// Literal lbPage = new Literal();
// lbPage.Text = @"<div style='visibility:hidden;clear:left;'><p class='PageNext'></p></div>";
// PlaceHolder1.Controls.Add(lbPage);
// }
// }

//}
仗剑逗二哈 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 net_lover 的回复:]
完全按照
<asp:Panel ID="Panel1" runat="server" Width="105px">
</asp:Panel>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
这样的代码结构的做法

HTML code

<%@ Page Language="C#" Debug="……
[/Quote]

love560 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 yixian2007 的回复:]
我还是不建议使用Tabel控件,表格不是用来布局的,一旦使用,你会发现界面会比较凌乱,布局还是采用DIV形式。

最好还是用我的方法或者1楼的方法,用control.addat将用编程方式添加。
[/Quote]

呵呵,我新手,好多方法、控件都不会用,正在狂学习中,谢谢大家耐心指导哈!
love560 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 yixian2007 的回复:]
引用 18 楼 love560 的回复:
C# code

TextBox txt = new TextBox();
txt.Height = "111px;";



这样写为啥不对呀?


不用写px
[/Quote]

出错了
CS0029: 无法将类型“string”隐式转换为“System.Web.UI.WebControls.Unit”


行 58: {
行 59: TextBox txt = new TextBox();
行 60: txt.Height = "111";//这个错误!
行 61: tc.Controls.Add(txt);
行 62: tr.Cells.Add(tc);


不知道怎么写了!

yixian2007 2011-01-12
  • 打赏
  • 举报
回复
我还是不建议使用Tabel控件,表格不是用来布局的,一旦使用,你会发现界面会比较凌乱,布局还是采用DIV形式。

最好还是用我的方法或者1楼的方法,用control.addat将用编程方式添加。
yixian2007 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 love560 的回复:]
C# code

TextBox txt = new TextBox();
txt.Height = "111px;";



这样写为啥不对呀?
[/Quote]

不用写px
love560 2011-01-12
  • 打赏
  • 举报
回复

TextBox txt = new TextBox();
txt.Height = "111px;";


这样写为啥不对呀?
love560 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 w_mojian180 的回复:]
如果你非要这样实现 那么建议你采用 asp:table控件 每一行设置两列 一个放你的lable一个就是textbox 完了之后添加新行
[/Quote]

呀!高手就是多呀,问下这样实现代码怎么写呀?就是你说的怎么一行设置两列呀?
还有个问题就是 我想控制下textbox的高,怎么设置呀?
路伊阑珊 2011-01-12
  • 打赏
  • 举报
回复
后台code
string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
int iRows = s.Length;
for (int i = 0; i <iRows; i++)
{
TableRow tr = new TableRow();

for (int j = 0; j < 2; j++)
{
TableCell tc = new TableCell();
if (j == 0)
{
Label la = new Label();
la.Text = s[i];
tc.Controls.Add(la);
tr.Cells.Add(tc);
}
if (j == 1)
{
TextBox txt = new TextBox();
tc.Controls.Add(txt);
tr.Cells.Add(tc);
}
tbContent.Rows.Add(tr);
}
}

前台code
 <div>
<asp:Table ID="tbContent" runat="server">

</asp:Table>
</div>
wangting0613 2011-01-12
  • 打赏
  • 举报
回复
前台生成这些,,可以用js啊,,,
路伊阑珊 2011-01-12
  • 打赏
  • 举报
回复
如果你非要这样实现 那么建议你采用 asp:table控件 每一行设置两列 一个放你的lable一个就是textbox 完了之后添加新行
孟子E章 2011-01-12
  • 打赏
  • 举报
回复
完全按照
<asp:Panel ID="Panel1" runat="server" Width="105px">
</asp:Panel>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
这样的代码结构的做法

<%@ Page Language="C#" Debug="true" %>

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


protected void Page_Load(object sender, EventArgs e)
{
string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++)
{
TextBox txt = new TextBox();
txt.Text = s[i];
txt.ID = "TextBox" + i.ToString(); //txt.top = i * 20;
Label la = ((Label)this.FindControl("label" + i));
la.Text = s[i];
Literal lt = new Literal();
lt.Text = "<br/>";
int il = GetControlIndex(la) + 1;
form1.Controls.AddAt(il, lt);
form1.Controls.AddAt(il, txt);
}
}
private int GetControlIndex(Label l)
{

for (int i = 0; i < form1.Controls.Count; i++)
{
if (form1.Controls[i].ID == l.ID) return i;
}
return 0;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server" Width="105px">
</asp:Panel>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
telankes2000 2011-01-12
  • 打赏
  • 举报
回复

string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++) {
TextBox txt = new TextBox();
txt.ID = "TextBox" + i;
txt.Text = i.ToString();
Label lbl = new Label();
lbl.ID = "lbl" + i;
lbl.Text = "lbl" + i;
Panel1.Controls.Add( lbl);
Panel1.Controls.Add(txt);
Literal li = new Literal();
li.Text = "<br/>";
Panel1.Controls.Add(li);
}
加载更多回复(10)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧