如何更新Ajax模式弹出面板中的下拉列表

时间:2011-08-11 08:25:39

标签: c# asp.net

我在更新面板旁边有一个girdview,girdview允许编辑,删除我数据库中的数据,我有一个名为Insert的按钮,当点击插入按钮时,会出现一个ajax模型弹出面板,里面有弹出面板,有一个下拉列表。

我的问题是,每当我的girdview面板发生变化时,如何更新弹出式面板中的下拉列表。

我尝试在girdview中更改一些数据,然后我必须刷新整篇论文(我不想做的事情)来更新下拉列表。

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"  AutoEventWireup="true" 
 CodeBehind="Test.aspx.cs" Inherits="Pages" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"   TagPrefix="ajaxToolkit" %>

  <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
 <asp:Button ID="RegisterButton" runat="server" Text="Register" OnClick="callmethod" />
 <asp:ScriptManager ID="ScriptManager" runat="server">
 </asp:ScriptManager>
 <asp:Panel ID="MainPanel" runat="server" Style="display: none" CssClass="modalPopup">
      <div>
           <asp:Table ID="InputTable" runat="server">
                <asp:TableRow>
                     <asp:TableCell>
                          <asp:Label ID="LabelName" runat="server" Text="name">     </asp:Label>
                     </asp:TableCell>
                     <asp:TableCell>
                          <asp:TextBox ID="TName" runat="server"></asp:TextBox>
                     </asp:TableCell>
                     <asp:TableCell>
                          <asp:RequiredFieldValidator ID="NameRequiredFieldValidator" ControlToValidate="TName"
                               runat="server" ErrorMessage="RequiredFieldValidator">Cannot be Empty</asp:RequiredFieldValidator>
                     </asp:TableCell>
                     <asp:TableCell><asp:DropDownList ID="TProjectMID" runat="server">  </asp:DropDownList></asp:TableCell>
                </asp:TableRow>
           </asp:Table>
           <p style="text-align: center;">
                <asp:Button ID="OkButton" runat="server" Text="OK" UseSubmitBehavior="false" OnClick="OkButton_Click" />
                <asp:Button ID="CancelButton" runat="server" Text="Cancel" />
           </p>
      </div>
   </asp:Panel>
      <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server" TargetControlID="RegisterButton"
      BackgroundCssClass="modalBackground" PopupControlID="MainPanel" OkControlID="OkButton"
      OnOkScript="onOk()" CancelControlID="CancelButton" PopupDragHandleControlID="InfoPanel" />
   <asp:UpdatePanel ID="UpdatePane" runat="server">
        <ContentTemplate>
           <asp:GridView ID="GridView" runat="server" AllowPaging="True" AllowSorting="True"
                AutoGenerateColumns="False" DataKeyNames="ProjectID" DataSourceID="DataSource"
                Width="921px">
                <Columns>
                     <asp:CommandField ShowDeleteButton="True" CausesValidation="false"  causeValidation = "false"/>
                     <asp:BoundField DataField="ID" HeaderText="ProjectID" SortExpression="ProjectID"
                          ReadOnly="True" />
                     <asp:BoundField DataField="Name" HeaderText="ProjectName" SortExpression="ProjectName" />
                </Columns>
           </asp:GridView>
           <asp:SqlDataSource ID="DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                DeleteCommand="DeleteProject" DeleteCommandType="StoredProcedure">
                <DeleteParameters>
                     <asp:Parameter Name="original_ID" Type="String" />
                     <asp:Parameter Name="original_Name" Type="String" />
                </DeleteParameters>
           </asp:SqlDataSource>
      </ContentTemplate>
 </asp:UpdatePanel>

2 个答案:

答案 0 :(得分:0)

使用AJAX动态填充下拉列表。或者.net无论如何都可以将下拉列表绑定到gridview。上次我用它是2.0。 :)

答案 1 :(得分:0)

为什么每次用户点击Insert-Button时都不能将DropDownlist绑定到它的DataSource?您还应该将弹出窗口的内容包装在自己的UpdatePanel中,并且只显示弹出窗口Update,以确保只重新加载弹出窗口,而不是整个页面。

编辑:

缺少回发的原因可能是任何Validator都阻止它。将CausesValidation=false设置为打开Popup的Register-Button。另一点:因为按钮位于UpdatePanel UpdatePane之外,我会考虑创建一个AsyncPostBacktriggerRegisterButtonControlID