js:<script type="text/javascript">
function setid()
{
  str='';
  if(!window.form1.no.value)
   window.form1.no.value=1;
    for(i=1;i<=window.form1.no.value;i++)
     str+=''+'<input type="text" name=no'+i+' value='+i+' size=2>:&nbsp;<input type="text" name="filename'+i+'" style="padding-left:1pt" size=23>&nbsp;<input type="text" name="file'+i+'" style="padding-left:1pt" size=55 value=""><br />';
  window.upid.innerHTML=str+'<br />';
}
</script>插入数据库:    <div>设置添加地址的数量:
    <input type="text" name="no" value="1" size="2"/>
    <input type="button" name="Button" onclick="setid();" value="添加"/>
    <div id="upid"></div>
    <input type="button" name="btnAdd" value="插入数据库" runat="server"/>
    </div>
如何才能把动态添加的地址插入数据库?数据库字段:
id 主键自增ID
no 图片地址ID
file 图片地址
filename 图片名称

解决方案 »

  1.   

    Request.Form["no"+i]
    但是动态添加的元素必须添加在form内.
      

  2.   

    在页面放一个隐藏的控件,把所有input里面的值处理后(将这些值合并一个在后台可以将其拆分的字符串)放在Hidden里面,然后从后台读取这些值,添加到数据库中去。
      

  3.   

    还是不会...我这样写的不行.请帮我写个正确的int count = Convert.ToInt32(Request.Form["no"]);
    string sql = "insert into file(no,filename,file) values(@1,@2,@3)";
    SqlParameter[] para = new SqlParameter[3];
    for (int i = 0; i < count; i++)
    {
        para[0] = new SqlParameter("@1", SqlDbType.Int);
        para[0].Value = Request.Form["no" + i];
        para[1] = new SqlParameter("@2", SqlDbType.NVarChar);
        para[1].Value = Request.Form["filename" + i];
        para[2] = new SqlParameter("@3", SqlDbType.NVarChar);
        para[2].Value = Request.Form["file" + i];
    }
    SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, para);
      

  4.   

    上面的代码有点问题,我写成这样也不行...        int count = Convert.ToInt32(Request.Form["no"]);
            string s1 = string.Empty;
            string s2 = string.Empty;
            string s3 = string.Empty;
            for (int i = 1; i < count; i++)
            {
                s1 = Request.Form["no" + i];
                s2 = Request.Form["filename" + i];
                s3 = Request.Form["file" + i];
                string sql = "insert into file(no,filename,file) values(@1,@2,@3)";
                SqlParameter[] para = new SqlParameter[3];
                para[0] = new SqlParameter("@1", SqlDbType.Int);
                para[0].Value = s1;
                para[1] = new SqlParameter("@2", SqlDbType.NVarChar);
                para[1].Value = s2;
                para[2] = new SqlParameter("@3", SqlDbType.NVarChar);
                para[2].Value = s3;
                SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, para);
            }
      

  5.   

    在关键字 'file' 附近有语法错误。
      

  6.   

    搞不定了,我把全部代码贴出来吧.add.aspx:
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>add</title>
    </head>
    <script type="text/javascript">
    function setid()
    {
      str='';
      if(!window.form1.no.value)
       window.form1.no.value=1;
        for(i=1;i<=window.form1.no.value;i++)
         str+=''+'<input type="text" name=no'+i+' value='+i+' size=2>:&nbsp;<input type="text" name="filename'+i+'" style="padding-left:1pt" size=23>&nbsp;<input type="text" name="file'+i+'" style="padding-left:1pt" size=55 value=""><br />';
      window.upid.innerHTML=str+'<br />';
    }
    </script>
    <body>
        <form id="form1" runat="server">
        <div>设置添加地址的数量:
        <input type="text" name="no" value="1" size="2"/>
        <input type="button" name="Button" onclick="setid();" value="添加"/>
        <div id="upid"></div>
        <input type="button" name="btnAdd" value="插入数据库" id="Button1" runat="server" onserverclick="Button1_ServerClick"/>
        </div>
        </form>
    </body>
    </html>add.aspx.cs:
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            { }
        }
        protected void Button1_ServerClick(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(SqlHelper.connectionstring);
            conn.Open();
            int count = Convert.ToInt32(Request.Form["no"]);
            string s1 = string.Empty;
            string s2 = string.Empty;
            string s3 = string.Empty;
            for (int i = 1; i < count; i++)
            {
                s1 = Request.Form["no" + i];
                s2 = Request.Form["filename" + i];
                s3 = Request.Form["file" + i];
                string sql = "insert into file(no,filename,file) values(@1,@2,@3)";
                SqlParameter[] para = new SqlParameter[3];
                para[0] = new SqlParameter("@1", SqlDbType.Int);
                para[0].Value = s1;
                para[1] = new SqlParameter("@2", SqlDbType.NVarChar);
                para[1].Value = s2;
                para[2] = new SqlParameter("@3", SqlDbType.NVarChar);
                para[2].Value = s3;
                SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, para);
            }
            conn.Close();
            Response.Write(count);
        }
    这个功能应该是很常用的啊,为什么没有人来帮我呢?
      

  7.   

    是列名file错了,SQL里命名file会变成[file]...
    大意了!!!