asp.net点击按钮动态生成文本框控件

海角的孤星 2010-08-26 04:42:50
今天要做一个模块,aspx页面上有一个button,当我点击按纽的时候,自动会添加材料名称和材料数量两个文本框,可以多次点击多次添加,最后点提交的时候将这些文本框的值取出并存入数据库,希望大家帮帮忙啊!
...全文
399 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
StillMiss 2010-10-24
  • 打赏
  • 举报
回复
学习下 正要用
GlyphVectory 2010-08-28
  • 打赏
  • 举报
回复
就向楼上朋友们说的那样。用js object.appendChild()
然后保存的时候在用js读取数据保存到一个隐藏域里面。然后在后台分解字符串就OK了
gavinma 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chenguang79 的回复:]
在页面中
<p id="FileList">定义一个显示的地方。这里,可以用div或是别的

按钮
<img style="cursor: hand" onclick=addFile(4) src="images/btn-add-edu.gif" />我用的是图片,你可以用你自己的


JScript code
//这里的max主要是限制一下最多可以加几个,如果不想限制可以不用 ……
[/Quote]
顶下
juxianxiang 2010-08-26
  • 打赏
  • 举报
回复
用JS,
后台用request。form
wuyq11 2010-08-26
  • 打赏
  • 举报
回复
动态添加textbox.
<asp:Button ID="createbutton" runat="server" Text="批量创建"
onclick="createbutton_Click" />
<asp:Table ID="HolderTable" runat="server"></asp:Table>

protected override void OnLoad(EventArgs e)
{
CreateControl();
}

protected void createbutton_Click(object sender, EventArgs e)
{
if (ViewState["CreateControl"] == null)
{
ViewState["CreateControl"] = true;
CreateControl();
}
}

void CreateControl() {
if (ViewState["CreateControl"]==null) return;
for (int x = 0; x < 20; x++)
{
TableRow row = new TableRow();
for (int y = 0; y < 4; y++)
{
TableCell cell = new TableCell();
Button bt = new Button();
bt.Text = string.Format(" x={0},y={1} ", x, y);
cell.Controls.Add(bt);
row.Cells.Add(cell);
}
HolderTable.Rows.Add(row);
}
}
$(function(){
$("#btnAdd").click(function(){
var count = $("#div input[name='txt']").length;
var str = "<input id=\"txt" + (count + 1) + "\" name=\"txt\" type=\"text\" />";
$("#div").append(str);
});
});
fixlet 2010-08-26
  • 打赏
  • 举报
回复
喜欢JS的话可以用INNERTROWS表格 去做 出现的文本框INPUT
不喜欢的话 那办法有很多 具体还是要看你自己
chenguang79 2010-08-26
  • 打赏
  • 举报
回复
在页面中
<p id="FileList">定义一个显示的地方。这里,可以用div或是别的

按钮
<img style="cursor: hand" onclick=addFile(4) src="images/btn-add-edu.gif" />我用的是图片,你可以用你自己的

//这里的max主要是限制一下最多可以加几个,如果不想限制可以不用  
function addFile(max)
{
var Text1 = document.getElementsByName("Text1");
if (Text1.length == 1 && Text1[0].disabled == true)
{
Text1[0].disabled = false;
return;
}
if (Text1.length < max)
{
var fileButton = '<br /><input type="hidden" id="Text1" name="Text1" /> <table width="550" border="0" cellspacing="0" cellpadding="0" align="center" >';
fileButton += '<tr>';
fileButton += '<td colspan="4" class="table_clew" valign="middle">';
fileButton += "<input type=\"text\" dataType=\"Limit\"msg=\"请正确输入您的毕业学校!\" max=\"30\" min=\"4\" name=\"SchoolName"+Text1.length+"\" id=\"SchoolName"+Text1.length+"\" maxlength=\"20\" ></td>";
fileButton += '</tr>';

fileButton += '</table>';
//alert(fileButton);
document.getElementById("FileList").insertAdjacentHTML("beforeEnd",fileButton);
}
}


这里,max是可以设置一下,要显示几个。这次你在给控件加名的或是ID的时候,就可以后面加值了

后面用Request.Form取就可以了。
wuguangyu110 2010-08-26
  • 打赏
  • 举报
回复
用DataTable虚拟列数,gridview中用模板,里边放空间名称,当后台点击添加时就虚拟增加一行相关数据,让后再databound【可能写的不对,就这意思】事件,中遍历获得每个空间的数据,最后保存到变量中就ok了
symbol_bc 2010-08-26
  • 打赏
  • 举报
回复

var inputObj = document.createElement("input");
inputObj.type = "text";
var containerObj;//容器对象用来放置input对象
containerObj.appendChild(inputObj);


//前台就是这么做,后台用this.Request.Form[]来取值,当然用ajax也行,数据库设计要有扩展性一点。
海角的孤星 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzk87 的回复:]
那你就只能 输出 input textbox 了。。 然后获取的时候 用 request.form 吧
[/Quote]
那具体应该咋做了?
周煜皓 2010-08-26
  • 打赏
  • 举报
回复
那你就只能 输出 input textbox 了。。 然后获取的时候 用 request.form 吧

62,041

社区成员

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

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

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

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