2011-12-22 41 views
1

我有一個網頁上有一個網格。當你點擊編輯時,會彈出一個模態窗口。在彈出的模式窗口中,有一個網格,下面有一個下拉列表和保存按鈕。當您單擊保存時,所選值將插入位於模態窗口中的網格中。回發時出錯

,一切工作正常,第一次,但是如果你已經關閉模態窗口,你碰巧做處理一遍(點擊第一個網編輯>模態窗口顯示>選擇了在DDL>命中項保存按鈕)回發錯誤發生。即時通訊使用一個更新面板,我還添加了postbacktrigger到模態窗口中的添加按鈕..

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation. 

代碼在第一格的編輯按鈕(這要求模態窗口中打開)

protected void grd_depreciation_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     Guid DepID = new Guid(grd_depreciation.DataKeys[e.NewEditIndex].Values[0].ToString()); 

     //Show the Depreciation Modal Popup 
     EditModalDepPopup.Show(); 
     //btnModalDepreciation_Click(sender,e); 

     //checks the type of depreciation.. Network or Equipment 
     DropDownList ddldescriptiondep = (DropDownList)(grd_depreciation.Rows[e.NewEditIndex].Cells[0].FindControl("ddlDescriptionDep")); 
     var incotype = (ddldescriptiondep.SelectedItem).ToString(); 
     populategrd_Editdepreciation(DepID, incotype); 

    } 

下面是模態窗口(導致錯誤的)裏面添加按鈕的代碼:

MarginAnalysi checkmarginanalysisid = MarginAnalysisAssumption_worker.get(a => a.ProjectCode == lbl_projectCode.Text).SingleOrDefault(); 
      DepreciationMatrix tblDepreciationMatrix = new DepreciationMatrix(); 

      tblDepreciationMatrix.DepMatrixID = Guid.NewGuid(); 
      tblDepreciationMatrix.DepID = new Guid(ViewState["DepID"].ToString()); 
      tblDepreciationMatrix.IncCapexOpexID = new Guid(ddDepreciationModalEmpty.SelectedValue); 
      DepreciationMatrix_worker.insert(tblDepreciationMatrix); 
      DepreciationMatrix_worker.submit(); 

EditModalDepPopup.Show(); 

      populategrd_Editdepreciation(new Guid(ViewState["DepID"].ToString()), ViewState["incotype"].ToString()); 

代碼填充模態窗口中的網格:

//Populate Edit Depreciaiton Grid on Modal 
    public void populategrd_Editdepreciation(Guid DepID, string incotype) 
    { 
     ViewState["DepID"] = DepID; 
     ViewState["incotype"] = incotype; 
     var x = from a in DepreciationMatrix_worker.get(a => a.DepID == DepID) 
       select new { a.DepMatrixID, a.IncCapexOpexID }; 

     grd_Editdepreciation.DataSource = x; 
     grd_Editdepreciation.DataBind(); 

     //Populate dropdownlist on edit depreciation modal 

     MarginAnalysi checkmarginanalysisid = MarginAnalysisAssumption_worker.get(a => a.ProjectCode == lbl_projectCode.Text).SingleOrDefault(); 

     //Selects eithers Equipment or Network Depreciation 
     string test = incotype.ToUpper(); 

     if (test.Contains("EQUIPMENT")) 
     { 
      var dropdowndepreciationmodal = from a in tblIncCapexOpex_worker.get(a => a.MarginAnalysisID == checkmarginanalysisid.MarginAnalysisID && a.IncCoTypeID == "CAPEX" && a.DepreciationTypeID == "EQUIPMENT") 
              select new { text = a.Description, value = a.IncCapexOpexID }; 

      populateDropdownlist(ddDepreciationModalEmpty, dropdowndepreciationmodal, true); 
     } 
     else 
     { 
      var dropdowndepreciationmodal = from a in tblIncCapexOpex_worker.get(a => a.MarginAnalysisID == checkmarginanalysisid.MarginAnalysisID && a.IncCoTypeID == "CAPEX" && a.DepreciationTypeID == "NETWORK") 
              select new { text = a.Description, value = a.IncCapexOpexID }; 

      populateDropdownlist(ddDepreciationModalEmpty, dropdowndepreciationmodal, true); 
     } 



    } 

模態彈出的Aspx代碼。此代碼位於updatepanel標籤內。

<asp:Button ID="btnModalDepreciation" CssClass="popup_ButtonsHide" runat="server" 
                   Text="Click here to show the modal" /><cc1:ModalPopupExtender BehaviorID="test4" 
                    ID="EditModalDepPopup" BackgroundCssClass="ModalPopupBG" runat="server" TargetControlID="btnModalDepreciation" 
                    PopupControlID="DivEditDepTab" Drag="True" PopupDragHandleControlID="DepPopupHeader" 
                    DynamicServicePath="" Enabled="True"> 
                   </cc1:ModalPopupExtender> 
                  <div id="DivEditDepTab" style="display: none;" class="popupConfirmation2"> 
                   <div class="popup_Container"> 
                    <div class="popup_Titlebar" id="DepPopupHeader"> 
                     <div class="TitlebarLeft"> 
                      Depreciation Items</div> 
                     <div class="TitlebarRight"> 
                     </div> 
                    </div> 
                    <div class="popup_Body"> 
                     Depreciation Details 
                     <br /> 
                     <asp:Table ID="Table25" runat="server" Width="400px"> 
                      <asp:TableRow> 
                       <asp:TableCell> 
                        <asp:GridView ID="grd_Editdepreciation" runat="server" AutoGenerateColumns="False" 
                         Width="100%" OnRowCancelingEdit="grd_Editdepreciation_RowCancelingEdit" OnRowDeleting="grd_Editdepreciation_RowDeleting" 
                         OnRowEditing="grd_Editdepreciation_RowEditing" OnRowUpdating="grd_Editdepreciation_RowUpdating" 
                         OnRowDataBound="grd_Editdepreciation_RowDataBound" DataKeyNames="DepMatrixID"> 
                         <Columns> 
                          <asp:TemplateField HeaderText="Depreciation" SortExpression="Depreciation"> 
                           <EditItemTemplate> 
                            <asp:DropDownList ID="ddDepreciationModal" runat="server" Width="100%"> 
                            </asp:DropDownList> 
                            <asp:HiddenField ID="hiddenIncCapexOpexID" runat="server" Value='<%# Bind("IncCapexOpexID") %>' /> 
                           </EditItemTemplate> 
                           <ItemTemplate> 
                            <asp:DropDownList ID="ddDepreciationModal" runat="server" Enabled="False" Width="100%"> 
                            </asp:DropDownList> 
                            <asp:HiddenField ID="hiddenIncCapexOpexID" runat="server" Value='<%# Bind("IncCapexOpexID") %>' /> 
                           </ItemTemplate> 
                          </asp:TemplateField> 
                          <asp:TemplateField ShowHeader="False"> 
                           <EditItemTemplate> 
                            <asp:LinkButton ID="btnUpdateDepModal" runat="server" CausesValidation="True" CommandName="Update" 
                             Text="Update"></asp:LinkButton>&nbsp;<asp:LinkButton ID="LinkButton2" runat="server" 
                              CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton></EditItemTemplate> 
                           <ItemTemplate> 
                            <asp:LinkButton ID="btnEditDepModal" runat="server" CausesValidation="False" CommandName="Edit" 
                             Text="Edit"></asp:LinkButton>&nbsp;<asp:LinkButton ID="btnDeleteDepModal" runat="server" 
                              CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton> 
                            <%-- <cc1:ConfirmButtonExtender ID="confirm1" TargetControlID ="btnDeleteDepModal" ConfirmText="Are you sure you want to delete this?" runat="server"> 
                            </cc1:ConfirmButtonExtender>--%> 
                              </ItemTemplate> 
                          </asp:TemplateField> 
                         </Columns> 
                         <EmptyDataTemplate> 
                          No Data Found</EmptyDataTemplate> 
                        </asp:GridView> 
                       </asp:TableCell></asp:TableRow> 
                     </asp:Table> 
                     <asp:Table ID="Table26" runat="server" Width="400px"> 
                      <asp:TableRow> 
                       <asp:TableHeaderCell>Depreciation</asp:TableHeaderCell></asp:TableRow> 
                      <asp:TableRow> 
                       <asp:TableCell Width="70%"> 
                        <asp:DropDownList ID="ddDepreciationModalEmpty" runat="server" Width="100%"> 
                        </asp:DropDownList> 
                       </asp:TableCell><asp:TableCell Width="30%"> 
                        <asp:Button ID="btnAddDepreciationItem" runat="server" Text="Add" Height="26px" OnClick="btnAddDepreciationItem_Click" 
                         Width="70%" /></asp:TableCell></asp:TableRow> 
                     </asp:Table> 
                     <asp:ValidationSummary ID="ValidationSummary22" runat="server" ValidationGroup="AddDepreciationModal" /> 
                     <asp:ValidationSummary ID="ValidationSummary23" runat="server" ValidationGroup="DeleteDepreciationModal" /> 
                    </div> 
                    <div class="popup_Buttons"> 
                     <asp:Button ID="btnCancelDepreciationModal" runat="server" Text="Close" OnClick="CancelDepreciationItem_Click" /></div> 
                   </div> 
                  </div> 
+0

你說'我還添加了一個postbacktrigger到模態窗口裏面的添加按鈕?你是否在沒有'postbacktrigger'的情況下嘗試它?檢查[http://msdn.microsoft.com/en-us/library/ms223397.aspx](ClientScriptManager.RegisterForEventValidation方法(字符串)) – Bastardo 2011-12-22 07:44:55

+0

@OkayGuy是的,我已經did.Same錯誤。 – anonymous1110 2011-12-22 07:56:12

回答

0

看看我對這個問題的回答,以瞭解什麼是錯的。

https://stackoverflow.com/a/8572928/168371

的問題是不是在你的代碼,但一些控制是不是更新面板內部和標記具有舊值。

請對任何進一步的幫助評論。

+0

嗨,這兩個下拉列表和網格已位於更新面板內。 – anonymous1110 2011-12-22 07:19:32

+0

請發佈aspx代碼也。 – 2011-12-22 07:27:38

+0

嗨,我已經粘貼了aspx代碼。請注意,我只粘貼了創建modalpopout的代碼。由於aspx太大,我無法粘貼其他人。 – anonymous1110 2011-12-22 07:36:59