62,046
社区成员
发帖
与我相关
我的任务
分享
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox tb = new TextBox();
tb.ID = "abc";
tb.Text = "c1";
this.panel.Controls.Add(tb);
}
}
public class SearchControlFac
{
public int FormID;
public Page Page;
public Panel Panel;
public ASPxGridView ASPxGridViewID;
public SearchControlFac(int _formid, Page _page, Panel _panel, ASPxGridView _aspxgridviewid)
{
this.FormID = _formid;
this.Page = _page;
this.Panel = _panel;
this.ASPxGridViewID = _aspxgridviewid;
}
public void InitPostBackSearchControl()
{
if (ASPxGridViewID.Columns["CreateDate"] != null)
{
SearchControl control = new TextBoxSearchControl();
control.Panel = Panel;
control.Page = Page;
control.TagName = "录入日期(起):";
control.ControlID = "CreateDate_Begin";
control.ControlSourceID = "DateTime";
control.ControlFieldName = "CreateDate";
control.ControlOperationType = Enum.GetName(typeof(EOperationType), EOperationType.GreatEqual);
control.AddControl();
SearchControl control_end = control.Clone();
control_end.TagName = "录入日期(止):";
control_end.ControlID = "CreateDate_End";
control.ControlOperationType = Enum.GetName(typeof(EOperationType), EOperationType.Less);
control_end.AddControl();
}
}
public void InitSearchControl()
{
DataTable dt = new BLL.SysManage.Sys_SearchFilter().GetList(FormID);
if (dt.Rows.Count > 0)
{
SearchControl searchcontrol = null;
foreach (DataRow dr in dt.Rows)
{
if (dr["ControlType"].ToString() == SearchControlType.TextBox.ToString())
searchcontrol = new TextBoxSearchControl();
else if (dr["ControlType"].ToString() == SearchControlType.DropDownList.ToString())
searchcontrol = new DropDownListSearchControl(int.Parse(dr["ID"].ToString()));
else if (dr["ControlType"].ToString() == SearchControlType.SelectidCtl.ToString())
searchcontrol = new SelectidCtlControl();
searchcontrol.Page = Page;
searchcontrol.Panel = Panel;
searchcontrol.TagName = dr["TagName"].ToString();
searchcontrol.ControlID = dr["ControlID"].ToString();
searchcontrol.ControlFieldName = dr["ControlFieldName"].ToString();
searchcontrol.ControlOperationType = dr["ControlOperationType"].ToString();
searchcontrol.ControlSourceID = dr["ControlSourceID"].ToString();
searchcontrol.AddControl();
}
}
}
}
但调试的时候发现,虽然在第一次加载时只显示开始时间与结束时间两个条件,但用户点击button的click事件后,就变成postback了,这时候,加载的是InitSearchControl方法,也就是开始时间与结束时间这两个条件不存在了,也就获取不到这两个栏位的值了。[/quote]
Asp.net的没有完美的方案。之前有人发过一样的贴子了。public class SearchControlFac
{
public int FormID;
public Page Page;
public Panel Panel;
public ASPxGridView ASPxGridViewID;
public SearchControlFac(int _formid, Page _page, Panel _panel, ASPxGridView _aspxgridviewid)
{
this.FormID = _formid;
this.Page = _page;
this.Panel = _panel;
this.ASPxGridViewID = _aspxgridviewid;
}
public void InitPostBackSearchControl()
{
if (ASPxGridViewID.Columns["CreateDate"] != null)
{
SearchControl control = new TextBoxSearchControl();
control.Panel = Panel;
control.Page = Page;
control.TagName = "录入日期(起):";
control.ControlID = "CreateDate_Begin";
control.ControlSourceID = "DateTime";
control.ControlFieldName = "CreateDate";
control.ControlOperationType = Enum.GetName(typeof(EOperationType), EOperationType.GreatEqual);
control.AddControl();
SearchControl control_end = control.Clone();
control_end.TagName = "录入日期(止):";
control_end.ControlID = "CreateDate_End";
control.ControlOperationType = Enum.GetName(typeof(EOperationType), EOperationType.Less);
control_end.AddControl();
}
}
public void InitSearchControl()
{
DataTable dt = new BLL.SysManage.Sys_SearchFilter().GetList(FormID);
if (dt.Rows.Count > 0)
{
SearchControl searchcontrol = null;
foreach (DataRow dr in dt.Rows)
{
if (dr["ControlType"].ToString() == SearchControlType.TextBox.ToString())
searchcontrol = new TextBoxSearchControl();
else if (dr["ControlType"].ToString() == SearchControlType.DropDownList.ToString())
searchcontrol = new DropDownListSearchControl(int.Parse(dr["ID"].ToString()));
else if (dr["ControlType"].ToString() == SearchControlType.SelectidCtl.ToString())
searchcontrol = new SelectidCtlControl();
searchcontrol.Page = Page;
searchcontrol.Panel = Panel;
searchcontrol.TagName = dr["TagName"].ToString();
searchcontrol.ControlID = dr["ControlID"].ToString();
searchcontrol.ControlFieldName = dr["ControlFieldName"].ToString();
searchcontrol.ControlOperationType = dr["ControlOperationType"].ToString();
searchcontrol.ControlSourceID = dr["ControlSourceID"].ToString();
searchcontrol.AddControl();
}
}
}
}
但调试的时候发现,虽然在第一次加载时只显示开始时间与结束时间两个条件,但用户点击button的click事件后,就变成postback了,这时候,加载的是InitSearchControl方法,也就是开始时间与结束时间这两个条件不存在了,也就获取不到这两个栏位的值了。 protected void Page_Load(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "abc";
this.panel.Controls.Add(tb);
if (!IsPostBack)
{
tb.Text = "c1";
}
}