OnClick 在 Modal 上的任何东西里面崩溃它

OnClick inside anything on Modal crash it

首先,请原谅我的英语水平和对这方面的了解。

我有这个,它是一个带有 2 个网格视图、一个文本框和三个按钮的模式,如您所见。 我隐藏的 table 有一个来自 sql 数据库的信息列表。

Appears Modal

每当我点击模态内的一个功能时,例如一个按钮或一行,因为我可以点击一行,模态消失并崩溃,就像这样。

After OnClick

ASPX 模式

                <div class="modal fade" id="mymodal" tabindex="-1" role="dialog"
                    aria-labelledby="exampleModalCenterTitle" aria-hidden="true" data-backdrop="static" data-keyboard="false">
                    <div class="modal-dialog modal-dialog-centered">
                        <div class="modal-dialog modal-dialog-centered" role="document">
                            <!-- Modal content-->
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                                    <h4 class="modal-title">Monthly Member Payment Detail </h4>
                                </div>
                                <div class="modal-body">
                                    <asp:HiddenField ID="hdId" runat="server" />
                                    <asp:HiddenField ID="hdScrollPosition" runat="server" />
                                    <asp:HiddenField ID="hdIndexToSelect" runat="server" Value="-1" />
                                    <asp:HiddenField ID="hdIndexSelected" runat="server" Value="-1" />
                                    <asp:HiddenField ID="hdListCust" runat="server" Value="nada" />
                                    <div class="mainDiv">
                                        <div style="display: table-row; height: 30px;">
                                            <asp:Label ID="Label1" runat="server">Buscar: </asp:Label>
                                            <asp:TextBox ID="txtToSearch" runat="server" Style="height: 25px;" OnTextChanged="onChangedText" AutoPostBack="true"></asp:TextBox>
                                            <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Img/searchImg.png" CssClass="custImgBtn" OnClick="onBtnSearch" />
                                        </div>
                                        <div class="custDiv" style="width: 45%">
                                            <div id="dvdScroll" class="tableFixHead" onscroll="setScrollPosition(this.scrollTop);">
                                                <asp:GridView ID="tableToSelect" runat="server" CssClass="tableFixHead" OnRowDataBound="tableToSelectRowDataBound" OnSelectedIndexChanged="OnToSelectIndexChanged">
                                                    <RowStyle CssClass="defaultRowStyle" />
                                                </asp:GridView>
                                            </div>
                                        </div>
                                        <div class="custDiv" style="width: 10%">
                                            <asp:LinkButton CssClass="custButAdd" ID="btnAdd" runat="server" Width="100%" OnClick="btnAdd_Click">
                                                <asp:Image ID="Image1" runat="server" ImageUrl="~/Img/SwipeRightBlack.png" BackColor="Transparent" />
                                                <br />
                                                <asp:Label ID="Label5" runat="server" Text="Añadir"></asp:Label>
                                            </asp:LinkButton>
                                            <asp:LinkButton CssClass="custButRemove" ID="btnRemove" runat="server" Width="100%" OnClick="btnRemove_Click">
                                                <asp:Image ID="Image2" runat="server" ImageUrl="~/Img/SwipeLeftBlack.png" BackColor="Transparent" />
                                                <br />
                                                <asp:Label ID="Label2" runat="server" Text="Eliminar"></asp:Label>
                                            </asp:LinkButton>
                                        </div>
                                        <div class="custDiv" style="width: 45%">
                                            <div class="tableFixHead">
                                                <asp:GridView ID="tableSelected" runat="server" CssClass="tableFixHead" AutoGenerateColumns="False" ShowHeaderWhenEmpty="True" OnRowDataBound="tableSelectedRowDataBound" OnSelectedIndexChanged="OnSelectedIndexChanged">
                                                    <RowStyle CssClass="defaultRowStyle" />
                                                    <Columns>
                                                        <asp:BoundField HeaderText="Nombre Cliente" DataField="Nombre Cliente" />
                                                        <asp:BoundField HeaderText="Nombre Contacto" DataField="Nombre Contacto" />
                                                        <asp:BoundField HeaderText="E-Mail" DataField="E-Mail" />
                                                        <asp:BoundField HeaderText="ID" DataField="ID" />
                                                    </Columns>
                                                </asp:GridView>
                                            </div>
                                        </div>
                                    </div>

                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default btn-flat toolbtn" data-dismiss="modal">Close</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

C#

        protected void tableToSelectRowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[3].Visible = false;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes["onclick"] = "ToggleOnRowClick('"+e.Row.Cells[3].Text+"',this);";
            e.Row.Attributes["style"] = "cursor:pointer";
        }
    }
    protected void OnToSelectIndexChanged(object sender, EventArgs e)
    {
        if (hdIndexSelected.Value != "-1")
        {
            int indx = int.Parse(hdIndexSelected.Value);
            tableSelected.Rows[indx].BackColor = Color.White;
            tableSelected.Rows[indx].BorderColor = Color.DimGray;
            tableSelected.Rows[indx].BorderWidth = 1;
            hdIndexSelected.Value = "-1";
        }
        if (hdIndexToSelect.Value != "-1")
        {
            int indx = int.Parse(hdIndexToSelect.Value);
            tableToSelect.Rows[indx].BackColor = Color.White;
            tableToSelect.Rows[indx].BorderColor = Color.DimGray;
            tableToSelect.Rows[indx].BorderWidth = 1;
        }

       hdId.Value = tableToSelect.SelectedRow.Cells[3].Text;
        tableToSelect.SelectedRow.BackColor = ColorTranslator.FromHtml("#aaaaaa");
        tableToSelect.SelectedRow.BorderColor = ColorTranslator.FromHtml("#cf002d");
        tableToSelect.SelectedRow.BorderWidth = 2;
        hdIndexToSelect.Value = tableToSelect.SelectedRow.RowIndex.ToString();


    }

我有更多的代码,但我认为我已经把最相关的 在此先感谢您的帮助

嗯,我现在只能猜测,但请尝试删除它:

e.Row.Cells[3].Visible = false;

并检查发生了什么。我认为您可能会遇到 IndexOutofRange 异常。

无论如何,你试过调试这个应用程序吗?或者放一些日志,看看应用程序崩溃的时间是什么时候?

我发现了问题,我很抱歉,因为我没有提供有价值的信息,原来是我的 UpdatePanel 有问题,所有内容都在里面。

问题是每次调用服务器更新更新面板时,主体保持不变,但默认模式有使其隐藏的淡入淡出,因此页面仍然如第二个所示图片。

所以我将模态框移到更新面板之外,然后像这样将另一个模态框放在模态框内。

会是这样的

<body>
    <div id="firstModal">
        <asp:UpdatePanel>
            -- content of modal
        </asp:UpdatePanel>
    </div>
    <asp:UpdatePanel UpdateMode="Conditional">
        -- content of the page
    </asp:UpdatePanel>
</body>

并且我在主更新面板中添加了一个有条件的更新模式,因为如果不是两者都会更新并且问题将无法解决。

我希望这对需要的人有所帮助,我知道我正在为自己的知识匮乏向自己解释,非常抱歉。