asp.net 动态添加textbox,并且获取值
各位高手好:
请大家帮帮忙,目的是:
同一个asp.net web页面,根据(textbox)里输入的数字,例如5,动态生成5行5列输入框
5列对应的是数据库的字段,然后完成提交给数据库,弄了3天了请各位大侠帮忙,谢谢!
[解决办法]
调用时每个TextBox 取相同的name
如:
var sjs ='';
for(i=0;i<5;i++)
{
sjs += '<intput id=t'+i+' name='t1' type='text' value='1' />'
}
document.all.div1.innerHTML = sjs; //动态生成
前台用
至于后台:
我就Request.Params["t1"].Value 接收过,
获取的值是"1,2,3...."
你分割一下字符串就得到了
[解决办法]
貌似有点麻烦
我没做过哦
等有时间去试试
[解决办法]
你的意思是生成5行5列后,你在这个表中输入数据,后在数据库创建一个一样的表?
[解决办法]
没明白需求
[解决办法]
可以在你想要显示生成TextBox的地方加个占位控件
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
CS:
- C# code
int nNum = 5; for (int i = 0; i < nNum; i++) { TextBox tx = new TextBox(); tx.ID = "txt" + i; this.PlaceHolder1.Controls.Add(tx); }
[解决办法]
给你个列子自己看看吧,网上搜得到的,动态添加
- JScript code
function addNewGoods(){ intTextIndex = intTextIndex + 1 ; document.getElementById("<% =hidSum.ClientID %>").innerText = intTextIndex; var textInput="<table class='full4' cellspacing='0' borderColorDark='white' borderColorLight='#a1b5c0' cellpadding='1' border='1' width='100%'><tr>" +"<td align='left'>姓名</td><td><input type='text' CssClass='tbTextbox' size='20' name='TextName" + intTextIndex + "' id='Text" + intTextIndex + "' /></td>" +"<td align='left'>工作单位</td><td><input type='text' CssClass='tbTextbox' size='20' name='TextMent" + intTextIndex + "' id='TextNum" + intTextIndex + "' /></td>" +"<td align='left'>职务</td><td><input type='text' CssClass='tbTextbox' size='20' name='TextType" + intTextIndex + "' id='TextType" + intTextIndex + "' /></td></tr></table>" document.getElementById('FileList').insertAdjacentHTML("beforeEnd",textInput); }
[解决办法]
[解决办法]
能生成输入框但读不到数据吗?你是不要触发一个时间(比如说按钮)之后再提交到数据库,输入框中的数值要填上之后在提交?
可以用if(!IsPostback)啊。
不好意思,不是很理解你的意思。
[解决办法]
GridView
建五个模板列
绑定到 new int[int.Parse(Textbox1.Text)]
[解决办法]
我没用过我就Request.Params["t1"].Value,所以不知道在后台取值是怎么取得,不过我按照我以前做过的给你个思路
在你的Page_Load事件里添加动态生成TextBox的代码(这点很重要,因为BS页面刷新后动态生成的控件会全部消失,所以你后面的按钮事件的FindControl会找不到对应的TextBox,虽然ViewState是保存的。。。),另外每个TextBox都一定要设定唯一指定的ID,这也很重要,不然每个ViewState中的值无法正确的分配到刷新后重新生成的对应TextBox上,然后后面就是你那个提交事件了。。。。。
反正就一句话,在Page_Load事件里添加动态生成TextBox的代码
[解决办法]
用<div> 的innerHtml可以实现的,但是要写javascript,不是很麻烦,命名的话可以用 xxx_? 的形式,?就是下标
[解决办法]
对啊,用GridView进行绑定不行吗?从数据库中读出来后绑定到GridView中,然后要多少行多少列的时候就用view不就行了吗?
[解决办法]
参考:
http://www.cnblogs.com/cathsfz/archive/2006/10/31/545521.html
http://www.cnblogs.com/cathsfz/archive/2006/11/05/550985.html
http://www.cnblogs.com/cathsfz/archive/2006/11/19/564929.html
http://www.cnblogs.com/cathsfz/archive/2007/09/11/889154.html
http://www.cnblogs.com/cathsfz/archive/2008/03/24/1119465.html
http://www.cnblogs.com/cathsfz/archive/2008/03/26/1122275.html
[解决办法]
我有个比较笨的想法,上面是textbox和button1,在textbox中输入数字,点击button1触发事件跳转页面或者弹出模态窗口,for循环生产所需的textbox个数,然后再对应的插入到数据库中。不知道是不是LZ想要的结果?
[解决办法]
js,ajax
[解决办法]
楼主可以参考一下。
- C# code
Page: <table> <tr> <td runat="server" id="TD"> </td> </tr> </table> //生成5行5列文本框 private void AddControl() { HtmlTable ht = new HtmlTable(); HtmlTableRow row; HtmlTableCell cell; for (int i = 1; i <= 5; i++)//循环行 { row = new HtmlTableRow(); for (int j = 1; j <= 5; j++)//循环列 { cell = new HtmlTableCell(); TextBox txt = new TextBox(); txt.ID = "txt_" + j.ToString(); cell.Controls.Add(txt); row.Cells.Add(cell); } ht.Rows.Add(row); } TD.Controls.Add(ht); }