2011-08-08 62 views
2

我有一個gridview,我有按鈕的每一行。點擊這個按鈕後,Modal PopUp Extender Panel打開(使用PanelName.Show())。該面板包含一個用戶控件,顯示一些標籤,文本框等。與SqlDataSource綁定的附加信息。直到這一點,它運作良好。但是,當我點擊另一個按鈕時,面板將完全顯示,但內容不會刷新(基於哪個按鈕被點擊,應該顯示一些細節信息)。基本上,SqlDataSource_Selecting方法僅用於面板彈出窗口顯示,但不再是。如何刷新打開的彈出擴展面板

如何強制面板在每個PanelName.Show()之後刷新(重新加載)?

在此先感謝。

回答

1

如果我正確理解您的問題,我認爲問題在於您需要在用戶單擊按鈕以更改所選項目後重新綁定數據綁定控件。你可以使用[ControlName].DataBind()來做到這一點。那有意義嗎?

+0

嗨,感謝您的評論,我正在嘗試這樣做,我在Page_Load方法中有一段代碼,堅強但不起作用 - 代碼被解僱了,但數據網格未被重新綁定。最後,我通過將整個自定義控件(彈出式頁面)放入更新面板來解決問題,此後,每次面板彈出時,頁面都會更新/刷新。 – Frankie

+0

幹得好先生!你可能想更新這個問題的標題,在它前面有[解決]。 – jadarnel27

+1

@ jadarnel27:不,我們不會在這裏標題[解決]。 –

0

取決於您要刷新的控件是否爲DataBound()

換句話說,您是否可以通過使用DataBind()方法調用強制控件重新加載自身,使用相同或新數據來強制控件重新加載? 大多數GUI控件都有DataBind()方法,但如果控件實際上沒有使用數據來工作,那麼它是無用的!

這就是爲什麼在你的情況下,你的面板不是用新數據「刷新」的,因爲在面板上使用DataBind()什麼都不做。在整個GridView上使用數據綁定()是一個不同的故事,應該工作。可能會在整個地段放置一個UPDATEPANEL?如果你這樣做,你必須小心,你的正常編輯和行上的其他命令將繼續工作。

然而,你可以做的是放置modalpopupextenderTemplateField內,並使用「絕招」,你可以保持您的服務器後背上,仍然觸發彈出面板。

<asp:UpdatePanel ID="upADDMAIN" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Button ID="btnADD" runat="server" Text="NEW LOGIN" BackColor="Blue" Font-Bold="True" ForeColor="#FFFFCC" OnClick="btnADD_Click" /> 
      <asp:Button ID="btnDUM" runat="server" style="display:none" /> 
      <div style="height:20px"> 
      </div> 
      <ajaxToolkit:ModalPopupExtender ID="mpeADD" runat="server" 
       targetcontrolid="btnDUM" 
       popupcontrolid="upADD" 
       backgroundcssclass="modelbackground">  
      </ajaxToolkit:ModalPopupExtender> 
      <asp:UpdatePanel ID="upAdd" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <asp:Panel ID="pnlADD" runat="server" Width="700px" HorizontalAlign="Center" CssClass="auto-style10" Height="200px"> 
.. 
.. 
         <div id="puFTR" class="auto-style17" style="vertical-align: middle"> 
          <asp:Button id="btnOK" runat="server" Text="OK" style="width: 80px" OnClick="btnOK_Click" /> 
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
          <asp:Button id="btnCAN" runat="server" Text="CANCEL" style="width: 80px" OnClick="btnCAN_Click" CausesValidation="False" /> 
         </div> 
        </asp:Panel> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

正如你可以看到,btnDUM控制是一個虛擬拿到MPE的工作,但它沒有實際使用,因爲它是由style="display:none"標籤隱藏起來。

但是,btnADD確實可行,因爲它在服務器端調用Click()方法,該方法會刷新新行上的數據。您可能需要使用一些jScript將ROWINDEX傳遞給Click()方法,以使其與GridView配合使用。

順便說一句,在我的情況「控制」手動MPE的Click()方法...

protected void btnADD_Click(object sender, EventArgs e) 
     { 
      ClearADDform(); 
      mpeADD.Show(); 
     } 

protected void ClearADDform() 
     { 
      txtLOGIN.Text = string.Empty; 
      cbISActive.Checked = true; 
      txtPWD.Text = string.Empty; 
      ddlAgent.SelectedIndex = -1; 
     } 

在我的情況,上面的代碼示例是一個GridView外,所以你需要調整。

但問題是,您仍然可以使用Ajax彈出窗口進行服務器端調用!

祝你好運。

相關問題