我想要的效果:界面加载时,只有3列,就是图片上的前三列。
然后点“添加更多”,下面就会出来第四列,再点,第五列
最后点提交,可以把上面的每一列都insert到数据库里。谢谢

解决方案 »

  1.   

    貌似这个功能可以通过gridview实现,不过不能不刷新,要不刷新只能用ajxa.动态读取DataSet.
      

  2.   

    用panel隐藏显示下面的
    然后点连接显示或者隐藏
    文本框就用textbox1-textbox5
    然后循环判断控件里的值是否为空
    如果一个为空就不判断下面的文本框
    直接return
      

  3.   


    这个方法我倒没有想过。。好像比datatable和Gridview简单很多。。那insert的时候for循环怎么写?
      

  4.   


    for (int i = 1; i < 6; i++)
            {
                TextBox txt1 = (TextBox)this.FindControl("TextBox" + i.ToString());
                if (txt1.Text != "")
                {
                    Response.Write(txt1.Text);
                }
            }
      

  5.   

    <%@ Page Language="C#" %><%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.Sql" %>
    <%@ Import Namespace="System.Data.SqlClient" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                using (DataTable dt = new DataTable())
                {
                    dt.Columns.Add("money");
                    dt.Columns.Add("date");
                    dt.Rows.Add(dt.NewRow());
                    dt.Rows.Add(dt.NewRow());
                    Session["dt"] = dt;
                    this.GridView1.DataSource = dt;
                    this.GridView1.DataBind();
                }
            }
        }    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            using (DataTable dt = (DataTable)Session["dt"])
            {
                dt.Rows.Add(dt.NewRow());
                Session["dt"] = dt;
                this.GridView1.DataSource = dt;
                this.GridView1.DataBind();
            }
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM table_name WHERE 1=2", conn))
                {
                    using (SqlCommandBuilder cb = new SqlCommandBuilder(da))
                    {
                        using (DataTable dt = (DataTable)Session["dt"])
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                dt.Rows[i][0] = ((TextBox)this.GridView1.Rows[i].FindControl("TextBox1")).Text;
                                dt.Rows[i][1] = ((TextBox)this.GridView1.Rows[i].FindControl("TextBox2")).Text;
                            }
                            da.Update(dt);
                            dt.AcceptChanges();
                            Session["dt"] = dt;
                            this.GridView1.DataSource = dt;
                            this.GridView1.DataBind();
                        }
                    }
                }
                conn.Close();
            }
        }
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Label ID="lblTheme" runat="server" Text="订单对应主题:"></asp:Label>
                <asp:Label ID="lblCode" runat="server" Text="订单号:"></asp:Label><br />
                <asp:Label ID="lblSum" runat="server" Text="总金额:"></asp:Label>
                <asp:LinkButton ID="LinkButton1" runat="server" Text="添加更多" OnClick="LinkButton1_Click"></asp:LinkButton>
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowHeader="false">
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server">第<%#Container.DataItemIndex + 1%>次回款金额:</asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text="<%#Bind('money')%>"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="Label2" runat="server">回款时间:</asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:TextBox ID="TextBox2" runat="server" Text="<%#Bind('date')%>"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                <asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
            </div>
        </form>
    </body>
    </html>
      

  6.   

    我是DataAdapter的fans,用一个CommandBuilder真的很省事的,一下子就把数据全部写入数据库里,呵呵~