最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET 頁面中動態(tài)增加的控件、添加事件第1/2頁

 更新時間:2009年07月16日 01:10:47   作者:  
在ASP.NET中動態(tài)創(chuàng)建一個控件總是不那么順利,特別是當(dāng)對頁面的Life Cycle不是那么了然的情況下!這里簡單描述一下要求,然后提供一個解決方案,大家看看有沒有更好的Idea,如果有的話就是我的大幸了,呵呵!
要求:頁面上有一個Add按鈕,每點(diǎn)擊一次該按鈕,頁面上動態(tài)創(chuàng)建一個WebPartZone!

  提醒:WebPartZone只能在OnInit或之前才能創(chuàng)建,否則報異常!

  大家都知道,按鈕的點(diǎn)擊事件是在RaisePostbackEvent時觸發(fā)的,這意味著點(diǎn)擊事件在OnLoad階段之后才執(zhí)行,遠(yuǎn)遠(yuǎn)落后于 OnInit階段,而且ViewState在OnLoad時才準(zhǔn)備好,OnInit以及之前的階段根本就不能使用ViewState!如果試圖在按鈕點(diǎn)擊事件里面創(chuàng)建WebPartZone等控件,唯一的后果就是頁面出錯;而如果在OnInit里面創(chuàng)建控件,由于ViewState沒有準(zhǔn)備好,那么有些數(shù)據(jù)比如當(dāng)前需要創(chuàng)建的個數(shù)(存在ViewState里面)就無法獲得!

  目前對這個問題我還沒有找到什么好的解決方案,經(jīng)過實(shí)驗,勉強(qiáng)得出一個不怎么優(yōu)雅的方案,就是利用HiddenField保存數(shù)據(jù),然后直接使用Request.Form["XXX"]在OnInit階段取得數(shù)據(jù);而判斷是否點(diǎn)擊按鈕也是通過Request.Form是否存在對應(yīng)數(shù)據(jù)來判斷的!廢話不多說了,大家看看代碼吧!
復(fù)制代碼 代碼如下:

private void Page_Load(object sender, System.EventArgs e)
{
Button Button1 = new Button();
Button1.CommandArgument = "b1";
Button1.Text = "Btn1";
Button1.Command += new CommandEventHandler(this.OnButton);
PlaceHolder1.Controls.Add(Button1);
Button Button2 = new Button();
Button2.CommandArgument = "b2";
Button2.Text = "Btn2";
Button2.Command += new CommandEventHandler(this.OnButton);
PlaceHolder1.Controls.Add(Button2);
Control c3 = ParseControl("<asp:Button id='Button3' text='Btn3' commandname='Btn' commandargument='b3' runat='server' />"); //將字符串轉(zhuǎn)換成web控件
Control c4 = ParseControl("<asp:Button id='Button4' text='Btn4' commandname='Btn' commandargument='b4' runat='server' />");
PlaceHolder1.Controls.Add(c3);
PlaceHolder1.Controls.Add(c4);
Button myBut = (Button)Page.FindControl("Button3");
myBut.Command += new CommandEventHandler(this.OnButton);
Button myBut2 = (Button)Page.FindControl("Button4");
myBut2.Command += new CommandEventHandler(this.OnButton);

}
public void OnButton(Object Sender, CommandEventArgs e)
{
switch (e.CommandArgument.ToString().ToLower())
{
case "b1":
Label1.Text = "Button 1";
break;
case "b2":
Label1.Text = "Button 2";
break;
case "b3":
Label1.Text = "Button 3";
break;
case "b4":
Label1.Text = "Button 4";
break;
};
}

asp.net為控件動態(tài)添加事件
實(shí)現(xiàn)的功能是在網(wǎng)頁上的Panel中動態(tài)添加一個Button,并為這個Button寫一個單擊事件。
動態(tài)添加控件的事件,語句:
復(fù)制代碼 代碼如下:

Control.Command += new CommandEventHandler(this.EventFun);

具體的代碼請看下面:
需要特別注意的是:
添加控件和給控件加事件時絕對不能放到 if(!IsPostback){}里面,那樣的話,點(diǎn)擊一次后控件會消失,而且事件也不
會執(zhí)行。
復(fù)制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
//將輸入字符串分析為System.Web.UI.Control對象,b為傳進(jìn)去的值
Control c = ParseControl("<asp:Button Text = '按我' ID = 'myButton' commandargument = 'b' runat = 'server' />");

//將控件添加大Panel中
this.Panel1.Controls.Add(c);

//查找頁面名為myButton的控件
Button Button = (Button)Page.FindControl("myButton");

//添加事件On_Button
Button.Command += new CommandEventHandler(this.On_Button);

}

//CommandEventArgs為command事件提供數(shù)據(jù)
protected void On_Button(Object sender,CommandEventArgs e)
{
Response.Write("<script language = 'javascript' type = 'text/javascript'><!--
alert('" + e.CommandArgument.ToString() + "');
// --></script>");
}

相關(guān)文章

  • Entity?Framework管理一對一實(shí)體關(guān)系

    Entity?Framework管理一對一實(shí)體關(guān)系

    本文詳細(xì)講解了Entity?Framework管理一對一實(shí)體關(guān)系的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • ASP.NET中URL Rewrite的具體實(shí)現(xiàn)方法

    ASP.NET中URL Rewrite的具體實(shí)現(xiàn)方法

    這篇文章介紹了ASP.NET中URL Rewrite的具體實(shí)現(xiàn)方法,有需要的朋友可以參考一下
    2013-11-11
  • asp.net 動態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載

    asp.net 動態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載

    接著上文Asp.net TextBox的TextChanged事件你真的清楚嗎?這里我們來說說狀態(tài)數(shù)據(jù)時如何加載的,需要的朋友可以參考下
    2012-12-12
  • VsCode之使用WebView通信詳解

    VsCode之使用WebView通信詳解

    這篇文章主要介紹了VsCode之使用WebView通信詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 編譯?dotnet和aspnetcore?源代碼詳情

    編譯?dotnet和aspnetcore?源代碼詳情

    這篇文章主要介紹了編譯?dotnet和aspnetcore?源代碼詳情,圍繞主題相關(guān)資料展開展開全文內(nèi)容,具有一定的參考價值需要的小伙伴可以參考一下
    2022-03-03
  • ASP.NET 導(dǎo)出到Excel時保留換行的代碼

    ASP.NET 導(dǎo)出到Excel時保留換行的代碼

    由于Excel畢竟不是 HTML,它有自己的樣式標(biāo)準(zhǔn),在Excel 中,實(shí)現(xiàn)換行的方法是
    2008-12-12
  • .net開發(fā)人員常犯的錯誤分析小結(jié)

    .net開發(fā)人員常犯的錯誤分析小結(jié)

    我最新一直在和新手和入手級開發(fā)人員打交道,我注意到一些開發(fā)人員(甚至是老手)在粗心時常犯的錯誤。這些錯誤各不相同,從工具的使用到網(wǎng)絡(luò)服務(wù)的適當(dāng)應(yīng)用都有。以下是六個主要的開發(fā)錯誤。
    2009-03-03
  • Coolite Cool Study 2 同時更新多個Tab

    Coolite Cool Study 2 同時更新多個Tab

    前段時間有一個需求是這樣子的——錄入一個查詢條件, 出來的查詢結(jié)果是多張頁面。不知道有沒朋友遇到這個問題。 展現(xiàn)的效果大概是這個樣子
    2009-05-05
  • .NET Core自定義配置文件

    .NET Core自定義配置文件

    這篇文章介紹了.NET Core自定義配置文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類

    ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類

    這篇文章主要介紹了ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類,本文給出實(shí)現(xiàn)代碼和使用方法示例,需要的朋友可以參考下
    2015-06-06

最新評論

潞西市| 治多县| 开远市| 泗洪县| 五原县| 阳朔县| 昌乐县| 黎城县| 景德镇市| 太谷县| 辽中县| 夏河县| 辽宁省| 大悟县| 邳州市| 合川市| 贡山| 林口县| 当阳市| 呼伦贝尔市| 南乐县| 安达市| 松江区| 岳池县| 闻喜县| 藁城市| 莫力| 财经| 福泉市| 丘北县| 峨眉山市| 巫山县| 新密市| 盐源县| 新龙县| 陆丰市| 色达县| 禹州市| 侯马市| 贺兰县| 景宁|