我想实现按一次按扭,添加一个查询条件;我用Panel来做控件容器。现在问题是添加控件按扭按下第一次时可显示。但按别的按扭panel中的控件将变成空,而且不管怎么按添加控件按扭都只能再一组控件,而不是期望的任意添加。panel的enableViewState已改成true了的。
    private void AddSearchItem()
    {
        DropDownList list0 = new DropDownList();        
        ListItem[] items0 ={new ListItem("全部",""), new ListItem("服务品质","1"), new ListItem("接待员服务满意度", "item1"),
            new ListItem("查新员服务满意度", "item2"),new ListItem("查新员的专业水平满意度", "item3"), 
            new ListItem("报交报告时间是否按时", "item4"),new ListItem("服务设施、环境满意度", "item5"),
            new ListItem("服务产品质量","2"),new ListItem("报告准确、清晰度","item21"),new ListItem("报告客观、公正性","item22"),
            new ListItem("报告规范性","23"),new ListItem("有建议","Suggestion")};        list0.Items.AddRange(items0);        DropDownList list1 = new DropDownList();
        ListItem[] items1 ={ new ListItem("很满意", "10"), new ListItem("满意", "8"), new ListItem("一般", "6"), new ListItem("不满意", "3"),
                        new ListItem("很不满意", "0")}; 
       
        list1.Items.AddRange(items1);   
        list0.EnableViewState = true;
        list1.EnableViewState = true;
        this.Panel1.Controls.Add(list1);
        this.Panel1.Controls.Add(list0);
    }
  protected void ibtnAdd_Click(object sender, ImageClickEventArgs e)
    {
        this.AddSearchItem();
    }

解决方案 »

  1.   

    你可以判断是否button1被点击过
    如果被点击
    Page_Load()中
    {
      if(Button1被点击&&Page.IsPostBack) AddSearchItem();
    }剩下的交给状态管理,不用写代码
      

  2.   

    我想还是viewstate的问题,
    你仔细查一下吧
      

  3.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Admin_test" %><!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:ImageButton ID="ibtnAdd" runat="server" ImageAlign="AbsMiddle" ImageUrl="~/Images/add.jpg"
                OnClick="ibtnAdd_Click" />&nbsp;
            <asp:ImageButton ID="ibtnDel" runat="server" ImageAlign="AbsMiddle" ImageUrl="~/Images/delete.jpg" /><br />
            <asp:Panel ID="Panel1" runat="server" Height="50px" Width="600px">
            </asp:Panel>
        
        </div>
        </form>
    </body>
    </html>
      

  4.   

    下面是cs文件:
    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;public partial class Admin_test : System.Web.UI.Page
    {
        #region 功能代码
        private void AddSearchItem()
        {
            DropDownList list0 = new DropDownList();
            ListItem[] items0 ={new ListItem("全部",""), new ListItem("服务品质","1"), new ListItem("接待员服务满意度", "item1"),
                new ListItem("查新员服务满意度", "item2"),new ListItem("查新员的专业水平满意度", "item3"), 
                new ListItem("报交报告时间是否按时", "item4"),new ListItem("服务设施、环境满意度", "item5"),
                new ListItem("服务产品质量","2"),new ListItem("报告准确、清晰度","item21"),new ListItem("报告客观、公正性","item22"),
                new ListItem("报告规范性","23"),new ListItem("有建议","Suggestion")};        list0.Items.AddRange(items0);        DropDownList list1 = new DropDownList();
            ListItem[] items1 ={ new ListItem("很满意", "10"), new ListItem("满意", "8"), new ListItem("一般", "6"), new ListItem("不满意", "3"),
                            new ListItem("很不满意", "0")};        list1.Items.AddRange(items1);
            list0.EnableViewState = true;
            list1.EnableViewState = true;
            this.Panel1.Controls.Add(list1);
            this.Panel1.Controls.Add(list0);    }
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {    } 
        protected void ibtnAdd_Click(object sender, ImageClickEventArgs e)
        {
            this.AddSearchItem();
        }
    }
      

  5.   

    Button1被点击这个被点击是属性还是什么??
      

  6.   

    Button1被点击这个被点击是属性还是什么??我也不知道...
      

  7.   

    页面添加了panel之后.你按其它按钮的时候没有设置他为false怎么会不见呢??还有面板里面的按钮你添加了事件没有!!
      

  8.   

    页面刷新 控件肯定会没有了。
    我试了试用session存放控件
      这样会实现你说的功能,但是有些乱,还需改进  private Hashtable DropDownListName    //用于接收控件,及其值
        {
            get
            {
                if (Session["DropDownList"] == null)
                {
                    return null;
                }
                else
                {
                    return (Hashtable)Session["DropDownList"];
                }
            }
            set
            {
                Session["DropDownList"] = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
            }
            if (DropDownListName != null)    //属性存在的情况下,将用户输入的值传入一个Hashtable
            {
                Hashtable t = new Hashtable();
                for (int i = 0; i < DropDownListName.Count; i++)
                {
                    DropDownList list0 = (DropDownList)DropDownListName[i];
                    this.Panel1.Controls.Add(list0);
                    t.Add(i, list0);
                }
                Session["value"] = t;   //将Hashtable付值给一个Session
      
               
            }    }    private void AddSearchItem()
        {
            Hashtable hs = new Hashtable();
            int i = 0;
            if (Session["value"] != null )
            {
                hs = (Hashtable)Session["value"];
                i = hs.Count;
            }        DropDownList list0 = new DropDownList();        ListItem[] items0 ={new ListItem("全部",""), new ListItem("服务品质","1"), new ListItem("接待员服务满意度", "item1"),
                new ListItem("查新员服务满意度", "item2"),new ListItem("查新员的专业水平满意度", "item3"), 
                new ListItem("报交报告时间是否按时", "item4"),new ListItem("服务设施、环境满意度", "item5"),
                new ListItem("服务产品质量","2"),new ListItem("报告准确、清晰度","item21"),new ListItem("报告客观、公正性","item22"),
                new ListItem("报告规范性","23"),new ListItem("有建议","Suggestion")};        list0.Items.AddRange(items0);        DropDownList list1 = new DropDownList();
            ListItem[] items1 ={ new ListItem("很满意", "10"), new ListItem("满意", "8"), new ListItem("一般", "6"), new ListItem("不满意", "3"),
                            new ListItem("很不满意", "0")};        list1.Items.AddRange(items1);
            list0.EnableViewState = true;
            list1.EnableViewState = true;
            this.Panel1.Controls.Add(list1);
            this.Panel1.Controls.Add(list0);
            hs.Add(i, list0);       //将控件的ID放入HashTable
            hs.Add(i+1, list1);        DropDownListName = hs;    }
        protected void ibtnAdd_Click1(object sender, EventArgs e)
        {
            this.AddSearchItem();
        }
      

  9.   

    luomingchao(顶好帖,不要分):分是默认的,都忘了看了。这五角是02还是03年时候得的了,离开IT几年了,呵。刚看了一下可用分,有上万分。不过不懂怎么改呀?想加分怎么加?