1

我有一个网页,上面有一个网格。单击编辑时,将打开一个弹出模式窗口。在弹出模式窗口内,有一个网格,在其下方有一个下拉列表和保存按钮。当您单击保存时,所选值将插入位于模式窗口的网格中。

第一次一切正常,但是如果您已经关闭模式窗口并且碰巧再次执行该过程(单击第一个网格上的编辑>模式窗口显示>在ddl上选择一个项目>点击保存按钮)回发错误发生。我正在使用更新面板,并且我还在模态窗口内的添加按钮中添加了一个回发触发器。

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>
4

1 回答 1

0

看看我对这个问题的回答,以了解哪里出了问题。

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

问题不在于您的代码,而在于某些控件不在更新面板内并且在标记中有旧值。

请评论以获得任何进一步的帮助。

于 2011-12-22T06:57:47.227 回答