2012-09-24 34 views
0

我有一個aspx網頁包含jQuery的手機,我不知道爲什麼,每當我在我的代碼中調用UpdatePanel.Update()一個白頁出現的結果!當然,頁面並不是空的,因爲當我查看源代碼(ctrl + u)時,所有內容都可用。奇怪的一點是一個頁面中的一個調用,2個Ajax請求提交,因此兩個不同的響應收到兩個不同的post參數。後在第一個請求是這樣的:使用UpdatePanel.Update()並沒有結果

的ScriptManager:UpdatePanel1 | grdRequests $ ctl03 $ btnCancel __ASYNCPOST:真 __EVENTARGUMENT:沒什麼 __EVENTTARGET:沒什麼 __EVENTVALIDATION:值這裏 __LASTFOCUS:沒什麼
__VIEWSTATE這裏值

和響應是這樣的:

1 |#| | 4 | 5451 |的UpdatePanel | UpdatePanel1 |

但在第二個請求中沒有ScriptManager和ASYNCPOST參數,也只有在舊的內容中才能看到沒有更多數據。任何想法?

客戶端:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConfOne.aspx.cs" Inherits="ConfDC"%> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 

    <link rel="stylesheet" href="jquery.mobile-1.1.1.min.css" /> 
    <script src="jquery-1.7.1.min.js" type="text/javascript"></script> 
    <script src="jquery.mobile-1.1.1.min.js" type="text/javascript"></script> 
</head> 
<body> 
<form id="form1" runat="server" dir="rtl" defaultbutton="btnpage" name="form1"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode = "Conditional"> 
    <ContentTemplate> 
    <table> 
     <tr> 
      <td> 
       <asp:Button runat="server" ID="btnpage" Width="1px" Height="1px" Visible="false"/> 
       <asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager> 
      </td> 
     </tr> 
    </table> 
<div id="mcnt"> 
    <div data-role="page"> 
    <div data-role="content" style="padding: 10px; text-align: center;"> 

     <asp:GridView ID="tbls runat="server" AutoGenerateColumns="False" Width="100%" 
      CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" 
      CellPadding="1" CellSpacing="1" AllowPaging="True" DataKeyNames="Id" OnRowCommand="tbls_RowCommand" 
      OnPageIndexChanging="tbls_PageIndexChanging"> 
      <Columns> 
       <asp:TemplateField HeaderText="Amount"> 
        <ItemTemplate> 
         <asp:Label ID="lblAmount" runat="server" Text='<%# Bind("Amount") %>'></asp:Label> 
        </ItemTemplate> 
        <ItemStyle/> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Button Text="Decline" ID="btnCancel" CommandName="CancelRequest" runat="server" 
          CommandArgument='<%# DataBinder.Eval(Container, "DataItem.id") %>' /> 
        </ItemTemplate> 
        <HeaderStyle HorizontalAlign="Center" /> 
        <ItemStyle HorizontalAlign="Center" /> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Button Text="Accept" ID="btnConfirm" CommandName="ConfirmRequest" runat="server" 
          OnClientClick="return confirm('Are you sure?');" 
          CommandArgument='<%# DataBinder.Eval(Container, "DataItem.id") %>' /> 
        </ItemTemplate> 
        <HeaderStyle HorizontalAlign="Center" /> 
        <ItemStyle HorizontalAlign="Center" /> 
       </asp:TemplateField> 
      </Columns> 
      <PagerStyle CssClass="pgr"></PagerStyle> 
      <AlternatingRowStyle CssClass="alt"></AlternatingRowStyle> 
     </asp:GridView> 
     </div> 
     <div id="rsnCnt">      
     <asp:Panel ID="pnlReasons" Width="100%" runat="server" Visible="false"> 
      <fieldset> 
       <asp:TextBox runat="server" ID="txtReasons" CssClass="TextArea" Height="70px" Width="100%" 
           TextMode="MultiLine"></asp:TextBox> 
       <asp:Label ID="lblError" runat="server" ForeColor="Red"></asp:Label> 
       <div id="btnActionCnt"> 
        <div style="float:right;"> 
         <asp:Button type="button" runat="server" ID="btnCancelRequest" Width="100px" class="groovybutton2" 
           Text="OK " OnClientClick="return confirm('are you sure?');" /> 
        </div> 
        <div style="float:left;"> 
        <asp:Button type="button" runat="server" ID="btnCancel" class="groovybutton2" Text="NOT OK" 
         onmouseover="" onmouseout="" 
         OnClick="btnCancel_Click" Height="25px" Width="100px" />   
        </div> 
       </div> 
      </fieldset> 
     </asp:Panel> 
    </div> 
    </div> 
</div> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
    </form> 
</body> 
</html>   

服務器端:

protected void tbls_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "CancelRequest") 
    { 
     pnlReasons.Visible = true; 
     UpdatePanel1.Update(); 

    } 
} 
+0

此外,我們需要更多的信息。如何處理一些服務器和客戶端代碼? – magnattic

+0

將ScriptManager控件移出UpdatePanel1 –

+0

我移動了ScriptManager,但它沒有解決問題,而是在將頁面更新到index.aspx之後,我的主頁!我不明白爲什麼? –

回答

0

我不知道爲什麼,但當我刪除updatepanel工作正常。

0

你在哪裏綁定你的GridView .. 您需要綁定在

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     // Need to Bind your grid here 
    } 
} 
+0

是的,我完全綁定它,但這不是我的問題。 –

+0

爲什麼不嘗試將GridView設置爲更新面板的AsyncPostBackTrigger –