2012-03-26 46 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