All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET,2.0中执行数据库操作命令之二_[Asp.Net教程]
网站?XML?我的思考_[XML教程]
实现ASP.NET程序性能目标的几种方法_[Asp.Net教程]
教你学会XML Web Service 的基础_[XML教程]
如何用.NET,Array类的Sort方法分类数值_.net资料_编程技术
Sql,Server2005学习日记(01)_mssql学习_编程技术
使用PHP开发网站过程中你注意到这些安全知识了吗?_php资料_编程技术
浅谈当下网页设计趋势_优化技巧_seo学堂
利用XMLHTTP从其他页面获取网页数据_JavaScript技术_编程技术
C#中ref和out的使用小结_[Asp.Net教程]
Reading number is top 10 pictures
Ashlynn Brooke photograph of a group4
Chinese paper-cut grilles art appreciation2
Go to the national museum1
世界五大海盗
原子弹轰炸长崎的珍贵照片
美丽的少女1
A beautiful girl to bud1
The mother was a stay-at-home children too tired took three baby suicide
美奂绝伦的风景
A beautiful girl to bud3
Download software ranking
Ashlynn Video2
打鸟视频
WebService在.NET中的实战应用教学视频 → 第4集
Popkart Cracked versions Mobile phone games
Boxer Classic video3
C++编程教程第三版
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
Tram sex maniac 2 (H) rar bag13
Boxer vs Yellow3
C语言教程TXT
delv published in(发表于) 2014/1/16 9:28:48 Edit(编辑)
ASP.NET动态创建控件之绝境求生_[Asp.Net教程]

ASP.NET动态创建控件之绝境求生_[Asp.Net教程]

ASP.NET动态创建控件之绝境求生_[Asp.Net教程]

在ASP.NET中动态创建一个控件总是不那么顺利,特别是当对页面的Life Cycle不是那么了然的情况下!这里简单描述一下要求,然后提供一个解决方案,大家看看有没有更好的Idea,如果有的话就是我的大幸了,呵呵!


要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone!
提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常!


大家都知道,按钮的点击事件是在RaisePostbackEvent时触发的,这意味着点击事件在OnLoad阶段之后才执行,远远落后于OnInit阶段,而且ViewState在OnLoad时才准备好,OnInit以及之前的阶段根本就不能使用ViewState!如果试图在按钮点击事件里面创建WebPartZone等控件,唯一的后果就是页面出错;而如果在OnInit里面创建控件,由于ViewState没有准备好,那么有些数据比如当前需要创建的个数(存在ViewState里面)就无法获得!


目前对这个问题我还没有找到什么好的解决方案,经过实验,勉强得出一个不怎么优雅的方案,就是利用HiddenField保存数据,然后直接使用Request.Form["XXX"]在OnInit阶段取得数据;而判断是否点击按钮也是通过Request.Form是否存在对应数据来判断的!废话不多说了,大家看看代码吧!



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>





Untitled Page









onClick="btnAdd_Click" />&nbsp;






using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public partial class _Default : System.Web.UI.Page
{
private int _count = 0;


protected override void OnInit(EventArgs e)
{
base.OnInit(e);


// 取得以前已创建控件的个数
if (!String.IsNullOrEmpty(this.Request["hfCount"]))
{
_count = Convert.ToInt32(this.Request["hfCount"]);
}


// 假如按下“Add”按钮,那么count加一
string target = this.Request["btnAdd"];
if (target == "Add")
{
_count++;
}


// 动态创建控件
for (int i = 0; i < _count; i++)
{ // 这里以TextBox为例,实际上需要创建的是WebPartZone
TextBox newTextbox = new TextBox();
newTextbox.ID = "TXT" + i.ToString();
this.PlaceHolder1.Controls.Add(newTextbox);
}
}


protected void Page_Load(object sender, EventArgs e)
{
hfCount.Value = _count.ToString();
}


protected void btnAdd_Click(object sender, EventArgs e)
{
// 不能在此添加WebPartZone控件,只能在OnInit或之前,否则报异常
}
}
希望大家能提出更好的解决方案,我拭目以待,呵呵@_@


来源:http://www.cnblogs.com/leafyoung/archive/2007/04/04/699465.html







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.