以下是我创建控件的代码:
        int j = 100;
        if (i < j)
        {            Button delete = new Button();
            delete.ID = "delete" + i.ToString();
            delete.Text = "删除";            TextBox arr_dt = new TextBox();
            arr_dt.ID = "arr_dt" + i.ToString();
            arr_dt.Text = DateTime.Today.ToShortDateString();
            arr_dt.Width = 90;
            TextBox lea_dt = new TextBox();
            lea_dt.ID = "lea_dt" + i.ToString();
            lea_dt.Text = DateTime.Today.AddDays(+1).ToShortDateString();
            lea_dt.Width = 90;            TextBox rm_num = new TextBox();
            rm_num.ID = "rm_num" + i.ToString();
            rm_num.Text = "1";
            rm_num.Width = 30;            TextBox pre_num = new TextBox();
            pre_num.ID = "pre_num" + i.ToString();
            pre_num.Text = "1";//是否取床位数?
            pre_num.Width = 30;            DropDownList rm_typ = new DropDownList();
            rm_typ.ID = "rm_typ" + i.ToString();
            rm_typ.Width = 150;
            rm_typ.Items.Clear();
            foreach (ListItem li in DropDownList3.Items)
            {
                rm_typ.Items.Add(new ListItem(li.Text, li.Value));
            }
            rm_typ.SelectedIndex = 0;            Panel1.Controls.Add(arr_dt);
            Panel1.Controls.Add(lea_dt);
            Panel1.Controls.Add(rm_typ);
            Panel1.Controls.Add(rm_num);
            Panel1.Controls.Add(pre_num);
            Panel1.Controls.Add(delete);
            delete.Attributes.Add("onclick", "return confirm('您确定要删除该预定吗?');");
            delete.Click += new EventHandler(btnDelRow_Click);
        }因为添加的这些控件可以被删除,所以取得时候我先取得没有被删除的控件(因为一组控件的数字标示是一样的,比如textbox1,button1是一组,textbox5,button5是一组)所以我只取了button的id值,由此可知还有哪些数字标示的控件没有被删除。于是有了下面的代码:ArrayList bb = new ArrayList();            foreach (System.Web.UI.Control t in Panel1.Controls)
            {
                if (t.GetType().ToString() == "System.Web.UI.WebControls.Button")
                {
                    System.Web.UI.WebControls.Button tb = (Button)t;
                    string numcount = tb.ID.ToString().TrimEnd().Substring(6);
                    bb.Add(numcount);
                }这段就是取出1,2,4,5,7,9,这样的数字标示,来判断控件是否还存在。接下来,就是问题了比如现在控件存在1,2,4,5,7,9这几组,1,2,4,5,7,9村在数组ArrayList bb = new ArrayList();
里面。
for (int k = 0; k < bb.Count; k++)
            {
                TextBox arr_dt = new TextBox();
                arr_dt.ID = "arr_dt" + bb[k].ToString();                TextBox lea_dt = new TextBox();
                lea_dt.ID = "lea_dt" + bb[k].ToString();                TextBox rm_num = new TextBox();
                rm_num.ID = "rm_num" + bb[k].ToString();                TextBox pre_num = new TextBox();
                pre_num.ID = "pre_num" + bb[k].ToString();                DropDownList rm_typ = new DropDownList();
                rm_typ.ID = "rm_typ" + bb[k].ToString();
             }但是我却不能用pre_num.ID,rm_typ.ID等来取值!
高人指点一下,谢谢!

解决方案 »

  1.   

    高手都去吃饭了???我现在把最后一段改为了for (int k = 0; k < bb.Count; k++)
                {                foreach (System.Web.UI.Control groupcount in Panel1.Controls)
                    {
                        if (groupcount.ID.ToString().TrimEnd().Substring(groupcount.ID.ToString().TrimEnd().Length) == bb[k].ToString())
                        {
                            System.Web.UI.WebControls.TextBox arr_dt = (TextBox)groupcount;
                            System.Web.UI.WebControls.TextBox lea_dt = (TextBox)groupcount;
                            System.Web.UI.WebControls.TextBox rm_num = (TextBox)groupcount;
                            System.Web.UI.WebControls.TextBox pre_num = (TextBox)groupcount;
                            System.Web.UI.WebControls.DropDownList rm_typ = (DropDownList)groupcount;                        string selectitem = rm_typ.SelectedValue;
                          }
                    }
    }但是                    if (groupcount.ID.ToString().TrimEnd().Substring(groupcount.ID.ToString().TrimEnd().Length) == bb[k].ToString())这个判断永远都是false,为啥呀?
      

  2.   

    这样的
    添加的控件不能在!IsPostBack这个里
    就能取到值了。因为控件发生了回发。
      

  3.   

    和!IsPostBack没有关系我这个值都再,就是不知道怎么取现在写成了这样: foreach (System.Web.UI.Control groupcount in Panel1.Controls)
                    {
                        if (groupcount.GetType().ToString() == "System.Web.UI.WebControls.DropDownList" || groupcount.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
                        {
                            int i = groupcount.ID.ToString().TrimEnd().Length - 1;
                            if (groupcount.ID.ToString().TrimEnd().Substring(i) == bb[k].ToString())
                            {
                                System.Web.UI.WebControls.DropDownList rm_typ;
                                if (groupcount.GetType().ToString() == "System.Web.UI.WebControls.DropDownList")
                                {
                                    rm_typ = (DropDownList)groupcount;
                                }
                                string selectitem = rm_typ.SelectedValue;但是现在rm_typ总是提示没有声明System.Web.UI.WebControls.DropDownList rm_typ;这个不适声明么?奇怪中
      

  4.   

    hehe~~我一点js语法都不懂~~懂一点吧~~嘿嘿,谢谢你啦