CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

动态创建button,两次替提交才能成功

楼主skyexpress()2005-08-01 23:47:32 在 .NET技术 / ASP.NET 提问

动态创建textbox,button.在提交时必须提交两次或刷新一次才能正确提交  
   
  在第一次提交时,提取不到textbox的值。 问题点数:20、回复次数:10Top

1 楼mapserver(杨东 http://mapserver.cnblogs.com)回复于 2005-08-01 23:54:03 得分 0

代码贴出来看看。Top

2 楼zhilunchen(他山居士)回复于 2005-08-02 01:16:58 得分 0

是啊,一次是添加事件处理代码,一次真正的执行Top

3 楼xzq686(★_瞬_★)回复于 2005-08-02 08:01:35 得分 0

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TextBox   txt   =   new   TextBox();  
  txt.ID   =   "txt1";                                   //动态创建的控件一定要给ID。  
  txt.Text   =   "(default   value)";  
  Form1.Controls.Add(txt);  
  }  
  Top

4 楼yang20052008(Apex)回复于 2005-08-02 08:14:29 得分 0

同意楼上观点Top

5 楼hchxxzx(NET?摸到一点门槛)回复于 2005-08-02 08:16:17 得分 0

你必须在page_load里面执行此按钮生成的代码,然后才能响应事件。  
  也就是说,如果在事件page_load之中,尚未生成该按钮,虽然该按钮已经缓存在你的视图里面了,但系统还是不会响应此按钮的事件,因为它认为该按钮还未生成。Top

6 楼bingbingcha(不思不归,不孟不E,原来是头大灰狼)回复于 2005-08-02 08:17:48 得分 0

用一个按钮也可以实现的吧??  
   
  按钮第一次提交  
  if   (ViewState["i"]   ==   null){  
      ViewState["i"]   =   0;  
  }else{  
      ViewState["i"]   =   (int)ViewState["i"]+1;  
   
  }  
   
  if   (ViewState["i"]   ==   2){  
      提交处理  
  }else{  
      提交失败  
  }  
  Top

7 楼skyexpress()回复于 2005-08-02 22:15:02 得分 0

namespace   tableeditor  
  {  
  ///   <summary>  
  ///   WebForm1   的摘要说明。  
  ///   </summary>  
  public   class   WebForm1   :   System.Web.UI.Page  
  {  
  protected   Axezz.WebControls.AxpDataGrid   mygrid;  
  protected   System.Web.UI.WebControls.PlaceHolder   searbox;  
   
  protected   string   StrSql="";  
  DataSet   ObjS=new   DataSet();  
  Button   SF;  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  Response.Cache.SetNoStore();  
  Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);  
  Response.AddHeader("Pragma",   "no-cache");//Tell   proxy   servers   not   to   cache   the   page.  
  Response.Cache.SetExpires(   DateTime.Now.AddSeconds(-1)   );  
   
  if(!Page.IsPostBack)  
  {  
   
  try  
  {  
  if(Context.Items.Count==0)  
  {  
  Response.Write(Context.Items.Count.ToString());  
  throw   new   Exception("没有数据源关键字!!");  
   
  }  
  else  
  {  
  string[]   ObjMP=new   string[Context.Items.Count-1];  
  for(int   ii=0;ii<Context.Items.Count-1;ii++)  
  {  
  ObjMP[ii]=Context.Items[ii].ToString();  
   
  }  
  ViewState["mp"]=ObjMP;  
   
  for(int   i=0;i<ObjMP.Length/2;i++)  
  {  
  StrSql+=ObjMP[i].ToString()+",";  
  }  
  StrSql=StrSql.Substring(0,StrSql.Length-1);  
  StrSql="select   "+StrSql+"   from   "+ObjMP[6];  
   
  ViewState["exesql"]=StrSql;  
  //Response.Write(StrSql+Context.Items.Count.ToString());  
   
   
  }  
   
  }  
  catch(Exception   ObjError)  
  {  
  Response.Write(ObjError.Message);  
  return;  
  }  
  }  
   
  try  
  {  
  System.Data.OleDb.OleDbDataAdapter   da   =   new   System.Data.OleDb.OleDbDataAdapter(ViewState["exesql"].ToString().Trim(),ConfigurationSettings.AppSettings["ConnectionString"]);  
  DataTableMapping   ObjM=da.TableMappings.Add("mainmaping","maintable");  
  for(int   i=0;i<Context.Items.Count/2-1;i++)  
  {  
  ObjM.ColumnMappings.Add(Context.Items[i].ToString(),Context.Items[i+7].ToString());  
  //Response.Write(Context.Items[i].ToString()+Context.Items[i+7].ToString());  
  }  
   
  da.FillSchema(ObjS,SchemaType.Mapped,"mainmaping");  
  da.Fill(ObjS,"mainmaping");  
  mygrid.DataSource=ObjS.Tables[0];  
   
  }  
  catch(Exception   ObjError)  
  {  
  Response.Write(ObjError.Message+ObjError.Source);  
  return;  
  }  
   
   
   
  string[]   ObjMPC=(string[])ViewState["mp"];  
   
  mygrid.GridDisplayIndex=false;  
  mygrid.RowClickAction="openform";  
  mygrid.EditSQL="select   *   from   "+ObjMPC[ObjMPC.Length/2];  
  mygrid.FormSQL="Select   *   From   "+ObjMPC[ObjMPC.Length/2];  
  mygrid.DeleteSQL="delete   from   "+ObjMPC[ObjMPC.Length/2];  
  mygrid.RowRollOverEffect=true;  
  mygrid.FormCellWidths="100,400";  
  mygrid.EditOptions="ALL   NOVIEW";  
  mygrid.EditNewPKStatement="autoincrement";  
  mygrid.EditPrimaryKeys=ObjS.Tables[0].PrimaryKey[0].ColumnName;  
  //mygrid.SetGridFreeFormatCellByCol(2,   "<a   class=\"AXDBTable\"   href=\"testgrid_editor.aspx?CustomerId=#CustomerId#\"><nobr>#CustomerId#</nobr></a>&nbsp;");  
   
  mygrid.ConnectionString   =   ConfigurationSettings.AppSettings["ConnectionString"];  
   
  Hashtable   Ht=(Hashtable)Cache["ht"];  
  string[]   Rq=(string[])Cache["rq"];  
  string[]   He=(string[])Cache["he"];  
  string[]   Da=(string[])Cache["da"];  
   
  IEnumerator   Ea=Ht.GetEnumerator();  
  while(Ea.MoveNext())  
  {  
  DictionaryEntry   DE=(DictionaryEntry)Ea.Current;  
   
  if(checkstr(DE.Key.ToString(),Rq))  
  {  
  Axezz.WebControls.EditFieldItem   efi   =   new   Axezz.WebControls.EditFieldItem();  
  efi.ColumnName   =DE.Key.ToString();  
  efi.Caption=DE.Value.ToString();  
  efi.Required   =   true;  
  mygrid.SetEditField(efi);  
   
   
  }  
  else   if(checkstr(DE.Key.ToString(),He))  
  {  
   
  Axezz.WebControls.EditFieldItem   edit1   =   new   Axezz.WebControls.EditFieldItem();  
  edit1.ColumnName   =DE.Key.ToString();  
  Axezz.WebControls.HtmlEditor   editor   =   edit1.EnableRichTextEditor();    
  editor.EditorHtmlPath="htmledit/editor.html";  
  editor.Height   =   "300";  
  editor.Width   =   "600";  
  edit1.Caption=DE.Value.ToString();  
  mygrid.SetEditField(edit1);  
   
  }  
  else   if(checkstr(DE.Key.ToString(),Da))  
  {  
   
  CreateDatePickBtn(mygrid,   DE.Key.ToString(),DE.Value.ToString());  
  }  
  else  
  {  
   
  Axezz.WebControls.EditFieldItem   efi2   =   new   Axezz.WebControls.EditFieldItem();  
  efi2.ColumnName   =DE.Key.ToString();  
  efi2.Caption=DE.Value.ToString();  
  mygrid.SetEditField(efi2);  
  }  
   
   
  }  
   
   
   
   
  CreateSerarchbut();//create   searchbox  
  //   在此处放置用户代码以初始化页面  
  }  
  Top

8 楼skyexpress()回复于 2005-08-02 22:15:41 得分 0

void   CreateSerarchbut()  
  {  
  Hashtable   Ht=new   Hashtable();  
  string[]   ObjMPC=(string[])ViewState["mp"];  
  Table   ObjT=new   Table();  
  ObjT.ID="searcht";  
  int   i=0;  
  foreach(Axezz.WebControls.DataColumn   ColName   in   mygrid.GridColumns)  
  {  
   
  TableRow   ObjR=new   TableRow();  
  if(ColName.ColumnName.Trim().Length!=0)  
  {  
  TableCell   ObjC1=new   TableCell();  
  ObjC1.Controls.Add(new   LiteralControl(ObjMPC[i+ObjMPC.Length/2+1]+":"));  
  ObjR.Cells.Add(ObjC1);  
  TableCell   ObjC2=new   TableCell();  
  TableCell   ObjC3=new   TableCell();  
  if(ColName.DataType==System.Type.GetType("System.String"))  
  {  
  TextBox   ObjBox=new   TextBox();  
  ObjBox.ID=ColName.ColumnName;  
  ObjBox.EnableViewState=false;  
  ObjBox.MaxLength=20;  
  ObjC2.ColumnSpan=2;  
  ObjC2.Controls.Add(ObjBox);  
  ObjR.Cells.Add(ObjC2);  
   
  Ht.Add(ColName.ColumnName,ColName.DataType);  
   
  }  
  if(ColName.DataType==System.Type.GetType("System.Int32"))  
  {  
  TextBox   ObjBox=new   TextBox();  
  ObjBox.MaxLength=20;  
  ObjBox.ID=ColName.ColumnName;  
  ObjBox.EnableViewState=false;  
  ObjC2.Controls.Add(ObjBox);  
  ObjR.Cells.Add(ObjC2);  
  LiteralControl   msg=new   LiteralControl();  
  msg.Text="<font   color='red'   size='1'>最小值</font>";  
   
  ObjC2.Controls.Add(msg);  
   
  Ht.Add(ColName.ColumnName,ColName.DataType);  
   
  TextBox   ObjBox2=new   TextBox();  
  ObjBox2.MaxLength=20;  
  ObjBox2.EnableViewState=false;  
  ObjBox2.ID=ColName.ColumnName+"2";  
  ObjC3.Controls.Add(ObjBox2);  
   
  LiteralControl   msg2=new   LiteralControl();  
  msg2.Text="<font   color='red'   size='1'>最大值</font>";  
   
  ObjC3.Controls.Add(msg2);  
   
  Ht.Add(ColName.ColumnName+"2",ColName.DataType);  
   
   
  ObjR.Cells.Add(ObjC3);  
   
   
   
  }  
  if(ColName.DataType==System.Type.GetType("System.DateTime"))  
  {  
  TextBox   ObjBox=new   TextBox();  
  ObjBox.MaxLength=20;  
  ObjBox.ID=ColName.ColumnName;  
  ObjBox.EnableViewState=false;  
  ObjC2.Controls.Add(ObjBox);  
  ObjR.Cells.Add(ObjC2);  
  LiteralControl   msg=new   LiteralControl();  
  msg.Text="<font   color='red'   size='1'>最小值</font>";  
   
  ObjC2.Controls.Add(msg);  
   
  Ht.Add(ColName.ColumnName,ColName.DataType);  
   
   
  TextBox   ObjBox2=new   TextBox();  
  ObjBox2.MaxLength=20;  
  ObjBox2.EnableViewState=false;  
  ObjBox2.ID=ColName.ColumnName+"2";  
  ObjC3.Controls.Add(ObjBox2);  
   
  LiteralControl   msg2=new   LiteralControl();  
  msg2.Text="<font   color='red'   size='1'>最大值</font>";  
   
  ObjC3.Controls.Add(msg2);  
   
  ObjR.Cells.Add(ObjC3);  
   
  Ht.Add(ColName.ColumnName+"2",ColName.DataType);  
   
  }  
   
   
  ObjT.Rows.Add(ObjR);  
  i++;  
   
  }  
  }  
   
  TableRow   ObjR2=new   TableRow();  
  TableCell   ObjC4=new   TableCell();  
  ObjR2.Cells.Add(ObjC4);  
   
  TableCell   ObjC5=new   TableCell();  
  SF=new   Button();  
  //Button   SF=new   Button();  
  SF.ID="searb";  
  SF.Text="查找";  
  //SF.Click   +=new   EventHandler(dosear);  
   
   
  ObjC5.Controls.Add(SF);  
  ObjR2.Cells.Add(ObjC5);  
   
  TableCell   ObjC6=new   TableCell();  
  HtmlInputButton   CB=new   HtmlInputButton();  
  CB.Attributes.Add("type","reset");  
  CB.ID="clearb";  
  CB.Value="清除";  
  ObjC6.Controls.Add(CB);  
  ObjR2.Cells.Add(ObjC6);  
   
  ObjT.Rows.Add(ObjR2);  
   
  searbox.Controls.Add(ObjT);  
   
  ViewState["ht"]=Ht;  
   
  }  
  /**/  
  void   dosear(object   sender,EventArgs   e)  
  {  
  //Response.Write(((TextBox)(FindControl("gsname"))).ID);  
  Hashtable   Ht=(Hashtable)ViewState["ht"];  
   
  IEnumerator   IEn=Ht.GetEnumerator();  
  while(IEn.MoveNext())  
  {  
  DictionaryEntry   DE=(DictionaryEntry)IEn.Current;  
  TextBox   TB=(TextBox)searbox.FindControl(DE.Key.ToString().Trim());  
  Response.Write(TB.Text+"<br>");  
  // Response.Write(DE.Key+"     "+DE.Value+"**");  
  }  
   
  /* string   sql   =ViewState["exesql"];  
  string[]   MPC=(string[])ViewState["mp"];  
  string   whereClause   =   string.Empty;  
  if   (MPC[i].Trim().   !=   string.Empty)  
  whereClause   =   "   Where   ProductName   Like   '"   +   ProductName.Value.Trim()   +   "%'";  
   
  if   (SupplierID.Value.Trim()   !=   string.Empty)  
  {  
  if   (whereClause   ==   string.Empty)  
  whereClause   =   whereClause   +   "   Where";  
  else  
  whereClause   =   whereClause   +   "   And";  
   
  whereClause   =   whereClause   +   "   SupplierID="   +   SupplierID.Value.Trim();  
  }  
  sql   =   sql   +   whereClause;  
  if   (Session["prevsql"]   !=   null   &&   Session["prevsql"].ToString()   !=   sql)  
  //   We   keep   the   previous   sql   in   a   session   variable   and   resets   the   AxpDataGrid   "state"   if   the   SQL   has   changed.  
  AxpDataGrid1.ClearState   =   true;  
   
  Session["prevsql"]   =   sql;  
  AxpDataGrid1.SQL   =   sql;*/  
   
  }  
  private   void   CreateDatePickBtn(Axezz.WebControls.AxpDataGrid   Grid,   string   ColumnName,string   ColC)  
  {  
  Axezz.WebControls.EditFieldItem   edit1   =   new   Axezz.WebControls.EditFieldItem();  
  edit1.ColumnName   =   ColumnName;  
  edit1.Caption=ColC;  
  edit1.HtmlAfter   =   "&nbsp;<a   onclick=\"OpenCalendar('Axezz"   +   Grid.Tag   +   "_Form_"   +   ColumnName   +   "');return   false;\"   href=\"#\"><img   src=\"gfx/iconcalendar.gif\"   border=\"0\"></a>";  
  Grid.SetEditField(edit1);  
  }  
   
   
  bool   checkstr(string   Str,string[]   SC)  
  {  
  bool   mm=false;  
  for(int   i=0;i<SC.Length;i++)  
  {  
  if(Str==SC[i])  
  {  
  mm=true;  
  break;  
  }  
   
  }  
   
  return   mm;  
   
  }  
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
  SF.Click   +=new   System.EventHandler(dosear);  
   
  }  
  #endregion  
  }  
  Top

9 楼skyexpress()回复于 2005-08-02 23:34:57 得分 0

由index.aspx调用  
   
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  namespace   tableeditor  
  {  
  ///   <summary>  
  ///   index   的摘要说明。  
  ///   </summary>  
  public   class   index   :   System.Web.UI.Page  
  {  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  Context.Items[0]="ID";  
  Context.Items[1]="user";  
  Context.Items[2]="gsname";  
  Context.Items[3]="create";  
  Context.Items[4]="opened";  
  Context.Items[5]="hits";  
  Context.Items[6]="main";  
  Context.Items[7]="用户号";  
  Context.Items[8]="用户名";  
  Context.Items[9]="公司名称";  
  Context.Items[10]="创建人";  
  Context.Items[11]="是否开通";  
  Context.Items[12]="点击数";  
   
  string[]   Rq=new   string[]{"ID","user","gsname","create","pass"};  
  Cache["rq"]=Rq;  
  string[]   HE=new   string[]{"ms"};  
  Cache["he"]=HE;  
  string[]   Da=new   string[]{"date","lastdate"};  
  Cache["da"]=Da;  
  string[]   DF=new   string[]{};  
   
  Hashtable   Ht=new   Hashtable();  
  Ht.Add("ID","用户号:");  
  Ht.Add("user","用户名:");  
  Ht.Add("pass","密码:");  
  Ht.Add("gsname","公司名称:");  
  Ht.Add("jc","简称:");  
  Ht.Add("yw","英文名称:");  
  Ht.Add("web","网址:");  
  Ht.Add("create","创建人:");  
  Ht.Add("fr","企业法人:");  
  Ht.Add("ms","企业描述:");  
  Ht.Add("jyms","经营模式:");  
  Ht.Add("mainyw","主营业务:");  
  Ht.Add("mydq","贸易地区:");  
  Ht.Add("kh","   企业客户:");  
  Ht.Add("xz","企业性质:");  
  Ht.Add("lxr","联系人:");  
  Ht.Add("sex","性别:");  
  Ht.Add("telqh","电话区号:");  
  Ht.Add("tel","电话:");  
  Ht.Add("faxqh","传真区号:");  
  Ht.Add("fax","传真");  
  Ht.Add("otherlx","其他联系方式:");  
  Ht.Add("mail","邮箱:");  
  Ht.Add("yb","邮编:");  
  Ht.Add("address","祥细地址:");  
  Ht.Add("date","注册日期:");  
  Ht.Add("opened","注册开通:");  
  Ht.Add("admin","后台是否开通:");  
  Ht.Add("addone_id","省:");  
  Ht.Add("addtwo_id","市:");  
  Ht.Add("ypxxone_id","产品大类:");  
  Ht.Add("ypxxtwo_id","产品小类:");  
  Ht.Add("method","注册方式:");  
  Ht.Add("logins","登录次数:");  
  Ht.Add("lastdate","上次登录时间:");  
  Ht.Add("hits","查看次数:");  
  Ht.Add("logo","企业   Logo:");  
  Ht.Add("pic","企业图片:");  
  Ht.Add("vip","会员身份:");  
  Cache["ht"]=Ht;  
   
  Server.Transfer("testgrid.aspx");  
  //   在此处放置用户代码以初始化页面  
  }  
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
  }  
  #endregion  
  }  
  }  
  Top

10 楼btut2004(养鱼炒股)回复于 2005-09-17 16:03:54 得分 0

有的时候看看viewstateTop

相关问题

  • 动态创建n个Button……
  • 动态创建的服务器控件,在页面提交后不能访问??!!!
  • 动态创建......
  • 动态创建TQuery
  • 创建动态datawindow
  • 动态创建表
  • 如何在tabcontrol的各tab中动态创建button
  • 动态创建的Button,怎么接收鼠标右击消息
  • 请问用CreateWindow创建的动态Button,如何指定ID?
  • 如何设置动态创建的Button的Enable属性?

关键词

  • 代码
  • objbox
  • objc
  • ht
  • axezz
  • colname
  • objr
  • 提交
  • editfielditem
  • gsname

得分解答快速导航

  • 帖主:skyexpress

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo