简体   繁体   English

UpdatePanel未更新

[英]UpdatePanel not updating

For whatever reason - my update panel is not updating. 无论出于何种原因 - 我的更新面板没有更新。 Now please note that this is all inside the item template of a template field inside of a gridview. 现在请注意,这都在gridview内的模板字段的项模板中。 Major Nesting. 主要嵌套。 Help me,Please 请帮帮我

<ItemTemplate>
   <asp:ImageButton ID="bttnEdit" runat="server" injid='<%# Eval("Id") %>' causeid='<%# Eval("Cause_Type") %>' natureid='<%# Eval("Nature_Type") %>' CausesValidation="False" ImageUrl="~/images/bttnEdit.gif" Text="Edit" OnClientClick ="loadmodal(this.injid,this.causeid,this.natureid);"  />
   &nbsp;<asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" 
   CommandName="Delete" ImageUrl="~/images/bttnDelete.gif" Text="Delete" />
   <asp:Panel ID = "Pnlmodal" runat ="server" style="background-color:White; padding:1em 6px;">  
      <asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional"  >
      <Triggers>
         <asp:AsyncPostBackTrigger ControlID ="bttnEdit" EventName ="Click" />
      </Triggers>
         <ContentTemplate>
            <asp:FormView ID="FormView2" runat="server" DefaultMode ="Edit" DataSourceID ="SqlDataSource8">
               <EditItemTemplate>
                  <table>
                     <tr>
                     <td colspan="2" align="center" style="color:Blue;font-size:large">Edit Injury</td>
                     </tr>
                     <tr><br /></tr>
                     <tr>
                        <td align="right" ><strong>What event caused the injury?</strong></td>
                        <td align="left">
                           <asp:DropDownList ID="ddlcauseofinj" onchange="showifother('1');" runat="server" 
                           DataSourceID="SqlDataSource2" DataTextField="Description" 
                           DataValueField="ID" AppendDataBoundItems="True">
                              <asp:ListItem Selected="True" style="color:gray" Value="0">Causes of Injury</asp:ListItem>
                           </asp:DropDownList>
                        </td>
                     </tr>
                     <tr id="trother1"  style="display:none">
                        <td align ="right"><strong>If Other, Please Describe:</strong></td>
                        <td align="left">
                        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
                        </td>
                     </tr>
                     <tr>
                        <td align="right"><strong>What is the extent of the Injury?</strong></td>
                        <td align="left">
                           <asp:DropDownList ID="ddlextentofinj" runat="server" 
                           onchange="showifother('2');" AppendDataBoundItems ="true"  DataSourceID="SqlDataSource3" 
                           DataTextField="Description" DataValueField="ID">
                           <asp:ListItem Selected="True" style="color:gray" Value="0">Extent of the Injury</asp:ListItem>
                           </asp:DropDownList>
                        </td>
                     </tr>
                     <tr id="trother2"  style="display:none">
                        <td align="right"><strong>If Other, Please Describe:</strong></td>
                        <td align="left">
                           <asp:TextBox ID="TextBox4" runat="server" TextMode="MultiLine" ></asp:TextBox>
                        </td>
                     </tr>
                     <tr>
                        <td align="right"><strong>Type of Medical Treatment:</strong></td>
                        <td align ="left">
                           <asp:DropDownList ID="DropDownList3" AppendDataBoundItems ="true"  runat="server" 
                           DataSourceID="SqlDataSource4" DataTextField="Description" DataValueField="ID">
                           <asp:ListItem Selected="True" style="color:gray" Value="0">Medical Treatments</asp:ListItem>
                           </asp:DropDownList>
                        </td>
                     </tr>
                     <tr>
                        <td align="right"><strong>Treatment Provider:</strong></td>
                        <td align="left">
                           <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Injury_Desc")%>'></asp:TextBox>
                        </td>
                     </tr>
                     <tr>
                        <td colspan ="2" align="center"><asp:ImageButton ID="CancelButton" runat="server" ImageUrl="~/images/bttnCancel.gif" /></td>
                     </tr>
                  </table>
               </EditItemTemplate>
            </asp:FormView>
         </ContentTemplate>
      </asp:UpdatePanel>
   </asp:Panel>
   <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
   TargetControlID="bttnEdit" PopupControlID="Pnlmodal" 
   BackgroundCssClass="modalBackground" Drag="True" />
</ItemTemplate>

I just wrap the update panel around the whole site. 我只是将更新面板包裹在整个站点周围。 This seams to usually do the trick. 这种接缝通常可以解决问题。 The fact you have an update panel in a grid view probably messes up the id of the panel and causes it not to update. 您在网格视图中有更新面板的事实可能会弄乱面板的ID并导致它不更新。

  1. just wrap the gridview in the panel 只需在面板中包装gridview

  2. try the whole site 尝试整个网站

I'm guessing you're having problems with bttnEdit being clicked and not causing your UpdatePanel to refresh, even tho you have an explicitly defined trigger. 我猜你在点击bttnEdit时遇到问题,并且没有导致你的UpdatePanel刷新,即使你有一个明确定义的触发器。

If that's the case, you're problem could be revolving around the fact that you do not actually have a server side click event defined for bttnEdit. 如果是这种情况,那么您可能会遇到一个问题,即您实际上没有为bttnEdit定义服务器端点击事件。 Instead, you hijack the click with javascript, and probably use that to submit your form without ever passing to the server that bttnEdit was clicked. 相反,你用javascript劫持了点击,并且可能使用它来提交你的表单,而不会传递到点击bttnEdit的服务器。

tl;dr: Change your bttnEdit to also do a server side click, or change your updatepanel to always update (the second one is an ugly hack) tl; dr:更改你的bttnEdit也可以进行服务器端点击,或者将你的updatepanel更改为总是更新(第二个是丑陋的黑客攻击)

Thanks for all of your answers! 谢谢你的所有答案! I moved the entire panel outside of the gridview and all the other nested controls. 我将整个面板移动到gridview和所有其他嵌套控件之外。 It worked. 有效。 It was having issues finding Control Id's. 它正在找到控制ID的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM