动态创建button,两次替提交才能成功
动态创建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> ");
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 = " <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




