1

グリッドのある Web ページがあります。[編集] をクリックすると、ポップアップ モーダル ウィンドウが開きます。ポップアップ モーダル ウィンドウ内にはグリッドがあり、その下にはドロップダウン リストと保存ボタンがあります。[保存] をクリックすると、選択した値がモーダル ウィンドウにあるグリッドに挿入されます。

最初はすべて正常に動作しますが、すでにモーダル ウィンドウを閉じていて、プロセスを最初からやり直してしまった場合 (最初のグリッドで編集をクリック > モーダル ウィンドウが表示されます > 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 に答える