本帖最后由 yangjun1003 于 2011-09-06 15:28:03 编辑

解决方案 »

  1.   

    添加行   dropdownlist    与 textbox
      

  2.   

    Button click事件之后   Dropdownlist 数据便会丢失   Y?
      

  3.   

    这里的gridview 就 dropdownlist 是获取数据信息
    但是 是为了添加到另一个表里的
    而 button click  添加行后    之前dropdownlist 的新选数值 被刷新空了
    不想 textbox 里的值一样 被记录    dropdownlist   又要被重新选择
      

  4.   

    DropDown 的 autopostback  设置没?或者 在 !isPostBack 中 ?
      

  5.   

    设置了也不行<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!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>
        
        </div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" 
                                DataTextField="DepartmentN" DataValueField="DepartmentN" 
                                AutoPostBack="True" SelectedValue='<%# Eval ("DDL1") %>' >
                            </asp:DropDownList>
                            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                                ConnectionString="<%$ ConnectionStrings:ETHANConnectionString %>" 
                                SelectCommand="SELECT [DepartmentN] FROM [Department]"></asp:SqlDataSource>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("str2") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("str3") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text="增加行" onclick="Button1_Click" />  <!-- -->
                            <asp:Button ID="Button2" runat="server" Text="删除行" onclick="Button2_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>    </form>
    </body>
    </html>using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("DDL1");
                dt.Columns.Add("str2");
                dt.Columns.Add("str3");
                for (int i = 0; i < 1; i++)
                {
                    DataRow dr = dt.NewRow();
                    dt.Rows.Add(dr);
                }
                this.GridView1.DataSource = dt;
                this.GridView1.DataBind();
            }
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            // 行号        int row = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;
            DataTable dt = new DataTable();
            dt.Columns.Add("DDL1");
            dt.Columns.Add("str2");
            dt.Columns.Add("str3");
            foreach (GridViewRow item in this.GridView1.Rows)
            {
                DataRow dr = dt.NewRow();
                dr["DDL1"] = ((DropDownList)item.Cells[0].FindControl("DropDownList1")).SelectedValue;
                dr["str2"] = ((TextBox)item.Cells[1].FindControl("TextBox2")).Text;
                dr["str3"] = ((TextBox)item.Cells[2].FindControl("TextBox3")).Text;
                dt.Rows.Add(dr);
            }
            dt.Rows.InsertAt(dt.NewRow(), row + 1);
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }    protected void Button2_Click(object sender, EventArgs e)
        {
            // 行号
            int row = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;
            DataTable dt = new DataTable();
            dt.Columns.Add("DDL1");
            dt.Columns.Add("str2");
            dt.Columns.Add("str3");
            foreach (GridViewRow item in this.GridView1.Rows)
            {
                DataRow dr = dt.NewRow();
                dr["DDL1"] = ((DropDownList)item.Cells[0].FindControl("DropDownList1")).SelectedValue;
                dr["str2"] = ((TextBox)item.Cells[0].FindControl("TextBox2")).Text;
                dr["str3"] = ((TextBox)item.Cells[0].FindControl("TextBox3")).Text;
                dt.Rows.Add(dr);
            }
            dt.Rows.RemoveAt(row);
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }}