2012-03-26 47 views
0

我想在選擇AJAX ModalPopup中的值後刷新GridView。但刷新只有在再次點擊選擇按鈕後纔會發生。點擊確定後,刷新應該會立即發生......我錯了什麼?如何使用ajax刷新gridview?

電賀 馬爾科

<div id="container" runat="server" /> 
<input id="dummy" type="button" style="display:none" runat="server"/> 

<ajaxToolkit:ModalPopupExtender runat="server" 
        ID="mpeThePopup" 
        TargetControlID="dummy" 
        PopupControlID="pnlModalPopUpPanel" 
        DropShadow="true"/> 

<asp:Panel ID="pnlModalPopUpPanel" runat="server"> 
    <asp:UpdatePanel ID="updatePanel2" runat="server" UpdateMode="Always"> 
     <ContentTemplate> 
      <asp:ListBox ID="availableCategories" runat="server" DataTextField="CategoryName" DataValueField="CategoryID" SelectionMode="Multiple"/> 
      <asp:Button ID="moveRight" runat="server" Text=">" OnClick="moveRightClick" /> 
      <asp:Button ID="moveLeft" runat="server" Text="<" OnClick="moveLeftClick" /> 
      <asp:ListBox ID="selectedCategories" runat="server" DataTextField="CategoryName" DataValueField="CategoryID" SelectionMode="Multiple"/> 
      <asp:Button ID="okButton" runat="server" Text="OK" OnClick="okClick" /> 
      <asp:Button ID="cancelButton" runat="server" Text="Cancel" OnClick="cancelClick" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="okButton" EventName="Click" /> 
     </Triggers> 
    </asp:UpdatePanel> 
</asp:Panel> 

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Objects; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication2 
{ 
    public partial class Select : System.Web.UI.UserControl 
    { 
     private ObjectSet<Category> osCategories; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       NorthwindEntities northwindEntities = new NorthwindEntities(); 
       categories.DataSource = northwindEntities.Categories; 

       availableCategories.DataSource = northwindEntities.Categories; 

       DataBind(); 
      } 

      Button showModal = new Button(); 
      showModal.Text = "Select"; 
      showModal.Click += new EventHandler(showModal_Click); 
      container.Controls.Add(showModal); 
     } 

     void showModal_Click(object sender, EventArgs e) 
     { 
      mpeThePopup.Show(); 
     } 

     protected void moveRightClick(object sender, EventArgs e) 
     { 
      foreach(ListItem listItem in availableCategories.Items) 
      { 
       if(listItem.Selected) 
       { 
        selectedCategories.Items.Add(listItem); 
        //availableCategories.Items.Remove(listItem); 
       } 
      } 
     } 

     protected void moveLeftClick(object sender, EventArgs e) 
     { 
      foreach(ListItem listItem in selectedCategories.Items) 
      { 
       if(listItem.Selected) 
       { 
        availableCategories.Items.Add(listItem); 
        //selectedCategories.Items.Remove(listItem); 
       } 
      } 
     } 

     protected void okClick(object sender, EventArgs e) 
     { 
      categories.DataSource = null; 
      categories.DataBind(); 

      categories.DataSource = availableCategories.SelectedItem; 
      categories.DataBind(); 

      mpeThePopup.Hide(); 
     } 

     protected void cancelClick(object sender, EventArgs e) 
     { 
      mpeThePopup.Hide(); 
     } 
    } 
} 
+0

你的代碼沒有多大意義。爲什麼在代碼隱藏中動態創建目標控件?並不是在對話框中顯示的「確定」按鈕? – 2012-03-26 22:14:05

回答

1

將您categoriesGridViewUpdatePanelClickAsyncPostBackTriggerokButton