本帖最后由 mayues 于 2011-05-10 09:58:42 编辑

解决方案 »

  1.   

    用一个Repeater绑定下拉框和文本框
    点击button1,在button的事件里面对repeater进行绑定,动态生成
    点击button2也是一样,重新绑定repeater,达到删除的目的
      

  2.   

    gridview + viewstate(DataTable) 结合绑定可以做出这种效果。第三方也可以。
    jqgrid.
      

  3.   

    最好还是js处理,但是加的不是服务器控件了
    或者用viewstate,感觉对客户不友好
      

  4.   

    用个table吧,在JS里写
    var tr = table.insertRow();//增加行
    var td=tr.insertCell();//增加列
    table.deleteRow(....);//删除行
      

  5.   

    就用 js做呗循环添加 文本框 和 2个 select 而已删除的化,直接 删除一个 tr。多方便的东西, 搞的这么麻烦。
      

  6.   

    给你个代码参考下
    前台<table cellpadding="0" cellspacing="0" style="font-size: 12px; text-align: center;
                                border: solid 1px #cccccc;">
                                <tr>
                                    <td style="width: 170px;" class="tdborder">
                                        <span class="ziti">项目1</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目2</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目3</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目4</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目5</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目6</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目7</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目8</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目9</span>
                                    </td>
                                    <td style="width: 90px;" class="tdborder">
                                        <span class="ziti">项目10</span>
                                    </td>
                                    <td style="width: 80px;" class="tdborder">
                                        <span class="ziti">删除</span>
                                    </td>
                                </tr>
                                <asp:Repeater ID="Repeater1" runat="server">
                                                                   <ItemTemplate>
                                        <tr>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm1" runat="server" Width="170"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm2" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm3" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm4" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm5" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm6" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm7" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm8" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm9" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td class="tdborder">
                                                <asp:TextBox ID="TextXm10" runat="server" Width="90"></asp:TextBox>
                                            </td>
                                            <td style="width: 80px;" class="tdborder">
                                                <asp:CheckBox ID="CheckDelete1" runat="server" />
                                                                                      </td>
                                        </tr>
                                    </ItemTemplate>
                                                               </asp:Repeater>
                            </table>后台: DataTable dt = new DataTable();
                for (int i = 0; i < count; i++)   //i是一个参数,表示增加几行
                {
                    dt.Rows.Add();
                }
    Repeater1.DataSource = dt;
              Repeater1.DataBind();自己修改下相应代码 
      

  7.   

    用JQuery也可以实现,你去下载个《锋利的jQuery》PDF看一下,马上能上手的。
      

  8.   

    我也想用JS做的 可是没怎么接触过JS 不知道代码怎么写
      

  9.   

    td.innerHTML="<input type='text' id='text1'/>";
      

  10.   

    这个完全可以用Gridview+XML来做
    我这里的代码已经通过测试,你在修改一下吧!
    前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList3" runat="server">
            </asp:DropDownList>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />        <asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
            
            <asp:GridView ID="GridView1" runat="server">
            <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server">
                    <asp:ListItem>并且</asp:ListItem>
                    <asp:ListItem>或者</asp:ListItem>
                    </asp:DropDownList>
                    <asp:DropDownList ID="DropDownList2" runat="server">
                    <asp:ListItem>作者</asp:ListItem>
                    <asp:ListItem>出版日期</asp:ListItem>
                    </asp:DropDownList>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    后台代码:using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.Sql;
    using System.Xml;
    using System.IO;public partial class Default3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BindXML();
            
        }    //绑定xml数据
        private void BindXML()
        {
            if (!System.IO.File.Exists(Server.MapPath("XMLFile.xml")))
            {
                Response.Write( "<script>alert('xml文件不存在,请先点击创建!')</script>");
                return;
            }
                        //方法一:通过ds 读取 xml
                        DataSet ds = new DataSet();
                        ds.ReadXml(Server.MapPath("XMLFile.xml"));
                        if(ds.Tables.Count > 0)
                        {
                            GridView1.DataSource = ds.Tables[0].DefaultView;
                            GridView1.DataBind();
                        }
        //    //方法二
        //    DataTable dt = new DataTable();
        //    DataColumn dc = new DataColumn("ID");
        //    dt.Columns.Add(dc);
        //    String XmlFilePath = Server.MapPath("XMLFile.xml");
        //    FileStream fs = new FileStream(XmlFilePath, FileMode.Open, FileAccess.ReadWrite);     //    //将xml文件加载成xmlDoc
        //    XmlDocument xmlDoc = new XmlDocument();
              //    xmlDoc.Load(fs);    //        //得到dbGust所有子节点
        //        XmlNodeList list = xmlDoc.GetElementsByTagName("user");    //        foreach (System.Xml.XmlNode node in list)
        //        {
        //            DataRow dr = dt.NewRow();    //            dr[0] = node.Attributes["ID"].Value;    //            dt.Rows.Add(dr);
        //        }
        //        GridView1.DataSource = dt;
        //        GridView1.DataBind();
        //        fs.Close();
                    }
        //添加行
        protected void Button1_Click(object sender, EventArgs e)
        {
            HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value) + 1).ToString();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("XMLFile.xml"));
            XmlNode xmldocSelect = xmlDoc.SelectSingleNode("Users");
            XmlElement el = xmlDoc.CreateElement("user"); //添加user节点
            el.SetAttribute("ID", HiddenField1.Value); 
            xmldocSelect.AppendChild(el);
            xmlDoc.Save(Server.MapPath("XMLFile.xml"));
            BindXML();    }
        //删除
        protected void Button2_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("XMLFile.xml"));
            XmlNodeList xnl = xmlDoc.SelectSingleNode("Users").ChildNodes;
            try
            {
                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;
                    if (xe.GetAttribute("ID") == HiddenField1.Value)
                    {
                        //xe.RemoveAttribute("name");//删除name属性
                        //xe.RemoveAll();//删除该节点的全部内容
                        xn.ParentNode.RemoveChild(xn);
                        break;
                    }
                }
                xmlDoc.Save(Server.MapPath("XMLFile.xml"));//保存
                HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value) - 1).ToString();
                BindXML();
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('操作失误,原因:"+ex.Message+"')</script>");
                return;
            }
            
        }
    }XML文件<?xml version="1.0" encoding="utf-8"?>
    <Users>
    </Users>
      

  11.   

    为什么我按上面的代码运行时,按Button键都不会增减控件呢
    XML文件里要写什么呢?
      

  12.   

    动态生成和删除,其实早年前就有好多人提起过,你可以百度一下或者谷歌一下,感觉答案非常的多,如果自己做,还是老实用JavaScript吧,最好不要用Jquery,从零开始学起,保证足够的知识。
      

  13.   

    我没学过JS,所以想问能不能给个JS代码参考
      

  14.   

    Jquery封装的很好了,不用白不用啊Jquery实现不了的在去用javascript写
      

  15.   

    就用现成的Jquery吧!方便,可靠性也强
    最近调试代码都快crazy了,