abc.aspx 页代码如下:<HTML>
<HEAD>
<title>同时产生多个文本框</title>
<script language="javascript">
var i = 1;
function addFile()
{
var dv = document.getElementById("dvFiles"); var file = document.createElement("input");
file.type = "text";
file.id = file.name = "file" + i; dv.appendChild(file);
dv.appendChild(document.createElement("BR")); i++;
}
</script> </HEAD><body>
<form id="form1" method="post" runat="server" enctype="multipart/form-data">
<table width="890" align="center" height="250" border="1">
<tr>
<td>名称:<input id="title" name="title"></td>
</tr>
<tr>
<td>位置:<INPUT id="Text1" name="title"></td>
</tr>
<tr>
<td><div id="dvFiles"></div></td>
</tr>
<tr>
<td><input type="button" value="增加一个文本框" onclick="addFile()"></td>
</tr>
<tr>
<td><asp:Button Runat="server" Text="发布信息" ID="Upload"></asp:Button></td>
</tr>
</table>
</form>
</body>
</html>------------------------------------------------------------
abc.aspx.CS 页代码如下:
private void Upload_Click(object sender, System.EventArgs e)
{
//这里要如何能得到由 “增加一个文本框” 产生的 input 的值,并插入数据库呢?
}
{
//这里要如何能得到由 “增加一个文本框” 产生的 input 的值,并插入数据库呢?
string tmp = Request.Form("file1");//不保证有用...
}
4红星的老大:“增加一个文本框”可不是就是只有一个文本框,可以动态产生多个 input 的!!!!!!!!!!就是这个效果:http://www.yibaiban.com/dem.aspx
-------------------------------------------------------------------------最起码要这样:private void Upload_Click(object sender, System.EventArgs e)
{
//这里要如何能得到由 “增加一个文本框” 产生的 input 的值,并插入数据库呢?
string[] tmp = .....
}
jscript 改为
<script language="javascript">
var i = 1;
function addFile()
{
var dv = document.getElementById("dvFiles"); var file = document.createElement("input");
file.type = "text";
file.id =i;
file.name = "title"; dv.appendChild(file);
dv.appendChild(document.createElement("BR")); i++;
}
</script>
c# 里的
private void Upload_Click(object sender, System.EventArgs e)
{
Response.Write(Request["title"].ToString());
}你点发布 后 会出现一个 跟 input 框 顺序一样的 用 逗号阁开的 字符传 你可以 对应里边的
内容进行操作
int i = 1;
while (true) {
string file_value = Request.Form("file" + i); // 获得值
if (file_value == null) { // 找不到该input
break; // 已经搜索完毕
}
... // 具体处理
}
如果i不一定是连续的,可以这么写:
string[] keys = Request.Form.AllKeys; // 所有被提交表单元素的key
int length = keys.length;
for (int i = 0; i < length; i++) {
string key = keys[i]; // 遍历key
if (key.StartWith("file")) { // 符合命名规则
string file_value = Request.Form[key]; // 获得值
... // 具体处理
}
}
这样不行吧,这不是把所有表单内的控件值全取过来了吗,我只要动态产生的那几个 input 的值!!
如果前台动态生成的input 的 type 是 file (就是上传文件) 的话:现在我的程序后台 .CS 取值是这样的:HttpFileCollection fileList = HttpContext.Current.Request.Files;如果把 javascript 脚本改一下:加上了这句 file.name = "title";那么如何把 HttpFileCollection fileList = HttpContext.Current.Request.Files;
改成
HttpFileCollection fileList = HttpContext.Current.Request......//就是只要 file.name = "title" 的文件,不然的话,会把页面内的所有 file 全取过来,包括页面内的其它的file
我做的同你一模一样就是这样取值的
最好他们的name使用不同的名最好了,然后用一个for来取出每一个
[email protected]