电竞比分网-中国电竞赛事及体育赛事平台

分享

用戶控件動(dòng)態(tài)加載PostBack后的問(wèn)題

 昵稱10504424 2013-02-18
很多網(wǎng)友在按鈕的click事件中動(dòng)態(tài)添加用戶控件在頁(yè)面回傳后消失了或者就是用戶控件中的按鈕事件不能觸發(fā),下面是解決辦法:
(1)
首先添加一個(gè)用戶控件:webusercontrol1.ascx
添加一個(gè)按鈕:public system.web.ui.webcontrols.button ucb;text為"用戶控件的按鈕"(等會(huì)要在page中用到這個(gè)按鈕,所以設(shè)置為public)
<asp:button id="ucb" text="用戶控件的按鈕" runat="server"></asp:button>
為按鈕的click事件添加代碼:
response.write(i.tostring());
i++;
在類中申明static int i=0;
這樣通過(guò)點(diǎn)擊按鈕可以看到點(diǎn)擊一次,計(jì)數(shù)增加1
(2)
添加一個(gè)頁(yè)面
放置一個(gè)placeholder,兩個(gè)按鈕
<asp:placeholder id="placeholder1" runat="server"></asp:placeholder>
<asp:button id="button1" runat="server" text="加載用戶控件"></asp:button>
<asp:button id="button2" runat="server" text="獲取用戶控件中的值"></asp:button>
添加一個(gè)加載用戶控件的操作:
private void adduc()
  {
   webusercontrol1 uc=(webusercontrol1)page.loadcontrol("webusercontrol1.ascx");
   uc.id="uc";
   this.placeholder1.controls.add(uc);
  }
為第一個(gè)按鈕增加click事件:
 private void button1_click(object sender, system.eventargs e)
  {
   if(viewstate["adduc"]==null)
   {
    adduc();
    viewstate["adduc"]=1;
   }
  }
我們?cè)谝晥D狀態(tài)中增加一個(gè)標(biāo)志位,表示是否點(diǎn)擊了按鈕來(lái)加載用戶控件,當(dāng)然如果已經(jīng)加載了再點(diǎn)擊按鈕就不需要重復(fù)加載了。
關(guān)鍵的是需要在page.ispostback的時(shí)候也要加載用戶控件
(因?yàn)槿绻贿@么做的話,回傳的時(shí)候用戶控件就消失了)
if(page.ispostback)
   {
    if(viewstate["adduc"]!=null)
    {
     adduc();
    }
   }
下面可以點(diǎn)擊button1試驗(yàn)一下,是不是加載了用戶控件?同時(shí)再點(diǎn)擊用戶控件中的按鈕也能很好的觸發(fā)其事件。
再為button2添加click事件,用來(lái)讀取用戶控件中btn這個(gè)按鈕的標(biāo)題,動(dòng)態(tài)加載的用戶控件和設(shè)計(jì)時(shí)加載的用戶控件一樣也能很好的和頁(yè)面進(jìn)行交互:
private void button2_click(object sender, system.eventargs e)
  {
   if(viewstate["adduc"]!=null)
   {
    response.write(((webusercontrol1)page.findcontrol("uc")).ucb.text);
   }   
  }
這里注意到在加載用戶控件的時(shí)候我們?yōu)橹付薸d,能夠方便的通過(guò)findcontrol來(lái)找到

文章整理:西部數(shù)碼

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多