以下是我创建控件的代码:
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等来取值!
高人指点一下,谢谢!
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等来取值!
高人指点一下,谢谢!
{ 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,为啥呀?
添加的控件不能在!IsPostBack这个里
就能取到值了。因为控件发生了回发。
{
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;这个不适声明么?奇怪中