2009-11-25 97 views
1

我有一个简单的UpdatePanel和一个按钮外面。我已经在UpdatePanel中将该按钮作为AsyncPostBackTrigger引入。 UpdatePanel本身工作正常,但按钮没有。无论何时单击该按钮,它的单击处理程序都不会运行,就像按钮完全不点击一样!AsyncPostBackTrigger禁用按钮

为什么按钮不工作,它如何被修复?


UPDATE: 这里是标记:

  <asp:UpdatePanel ID="upGridView" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:GridView ID="grdList" SkinID="SimpleGridView" DataKeyNames="Key" runat="server" 
        AllowPaging="True" PageSize="15" AutoGenerateColumns="False" Caption="<%$ Resources: CommonResources, grdListCaption %>" 
        EmptyDataText="<%$ Resources: CommonResources, grdListEmptyDataText %>" OnRowEditing="grdList_RowEditing" 
        OnPageIndexChanging="grdList_PageIndexChanging" OnRowCreated="grdList_RowCreated"> 
        <Columns> 

        </Columns> 
       </asp:GridView> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="btnDelete" EventName="Click" /> 
       <asp:AsyncPostBackTrigger ControlID="btnNew" EventName="Click" /> 
       <asp:AsyncPostBackTrigger ControlID="btnForward" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 

     <asp:Button ID="btnDelete" runat="server" SkinID="Button" Text="<%$ Resources: CommonResources, btnDelete %>" 
      OnClick="btnDelete_Click" /> 
     <asp:Button ID="btnNew" runat="server" SkinID="Button" Text="<%$ Resources: CommonResources, btnNew %>" 
      OnClick="btnNew_Click" /> 
     <asp:Button ID="btnForward" runat="server" SkinID="Button" meta:resourcekey="btnForward" 
      OnClick="btnForward_Click" /> 
+0

任何机会,你可以发布你的标记? – CaRDiaK 2009-11-25 09:21:06

+0

当然,更新的问题与标记。 – 2009-11-25 09:40:36

+0

如果我也将Button放在UpdatePanel中,它将会工作。 – 2009-11-25 10:22:17

回答

1

其明确的页面(模块)不成才在Page_Load事件,这事件预防potbacking您的按钮。

我的意思是你尝试后回来,Page_Load事件再次运行,一切都显示为第一次,

我通过把一个

if(!IsPostBack) 
     DoSomething(); 
0
<asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="False" UpdateMode="Conditional" runat="server"> 
      <ContentTemplate> 
    <form id="form1" runat="server" defaultbutton="btnSearch"> 

    <div> 
      <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" 
runat="server"> 
     </asp:ScriptManager> 
    <script language="javascript" type="text/javascript"> 



    var prm = Sys.WebForms.PageRequestManager.getInstance(); 

    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest); 
    var postBackElement; 
    function InitializeRequest(sender, args) 
    { 

     if (prm.get_isInAsyncPostBack()) 
     args.set_cancel(true); 
     postBackElement = args.get_postBackElement(); 
     if (postBackElement.id == 'btnSearch') 
     $get('UpdateProgress1').style.display = 'block'; 

    } 



    function EndRequest(sender, args) 
    { 
     if (postBackElement.id == 'btnSearch') 
      $get('UpdateProgress1').style.display = 'none'; 

    } 



</script> 
    </div>   


     <asp:GridView ID> 

     <Columns> 
      <asp:TemplateField> 
      <HeaderTemplate> 
      <asp:Label ID="Label2" runat="server" Text="Status"></asp:Label> 
       <asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:HighlightRow(this);" 
       AutoPostBack="true" ToolTip="Click here to select all checkboxes" 
       OnCheckedChanged="chkSelectAll_CheckedChanged"/> 
      </HeaderTemplate> 
      <ItemTemplate > 

      <asp:CheckBox ID="CheckBox1" onclick="javascript:HighlightRow(this);" 
         AutoPostBack="true" runat="server" 
         OnCheckedChanged="CheckBox1_CheckedChanged1" /> 


      </ItemTemplate> 

      </asp:TemplateField> 

    <asp:BoundField 
</asp:GridView> 

</ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click"/> 

     </Triggers> 
     </asp:UpdatePanel> 
      <asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server" ><ProgressTemplate> 
       <asp:Image ID="Imgwait" runat="server" 
        ImageUrl="~/Content/images/images/ApImages/001413_0.gif" /> 
       <asp:Label ID="Lblwait" runat="server" 
        Text="Please wait while we process your request...." Font-Names="Tahoma" 
        Font-Size="10px" ForeColor="#990000"></asp:Label> 
</ProgressTemplate> 
</asp:UpdateProgress> 

    <div style="position: absolute;left:55%;top: 65%; vertical-align:middle; width:300px; text-align:center"> 
<asp:Panel ID="IMGDV" runat="server" Width="300px" 
      BackColor="#3D3327" Visible="False" BorderStyle="Outset"> 
     <asp:Image ID="Image4" runat="server" 
      ImageUrl=" " Width="16px" 
      ToolTip="write your notes here for closure" /> 
    <asp:Label ID="Label1" runat="server" CssClass="GridHeader" 
      Text="Please Provide note ."></asp:Label> 
    <table style="border-style: solid; border-width: thin; width: 100%; background-color: #D3CCC2;"><tr><td style=" text-align:center"> 


     <asp:TextBox ID="TextBox2" Textmode="MultiLine" Height="80px" Width="250px" 
      CssClass="heading1" runat="server" ontextchanged="TextBox2_TextChanged" 
      BackColor="#D9D9CA" BorderColor="#3E1F00" BorderStyle="Inset"></asp:TextBox> 
    </td></tr> 
    </table> 

    <table style="border-style: outset; border-width: medium; width: 100%; background-color: #BDB2A4;"> 
    <tr> 

    <td style=" text-align:left"> 
    <asp:panel runat="server" ID="pnlsub" BackColor="#3D3327" 
     BorderStyle="Outset" Width="90%" ToolTip="Submit"> 

     <asp:Button ID="Button1" runat="server" Text="Submit" CssClass="Button" BorderStyle="Solid" BorderColor="#3D3327" onclick="Button1_Click"/> 
         </asp:panel> 
     </td> 
     <td style=" text-align:left"> 
     <asp:panel runat="server" ID="pnlcan" BackColor="#3D3327" 
     BorderStyle="Outset" Width="90%" ToolTip="Cancel"> 

      <asp:Button ID="Button2" runat="server" Text="Cancel" CssClass="Button" BorderStyle="Solid" BorderColor="#3D3327" onclick="Button2_Click"/> 
      </td> 
     </tr> 
      </table> 
     </asp:Panel > 
    </div> 

代码背后有这个problemt和resolveit

protected void CheckBox1_CheckedChanged1(object sender, EventArgs e) 
     { 
IMGDV.Visible = true; 

} 

在复选框checkchange事件想要显示pannel控制但它不显示英pannel控制 帮助...