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">×</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>
并且我在主更新面板中添加了一个有条件的更新模式,因为如果不是两者都会更新并且问题将无法解决。
我希望这对需要的人有所帮助,我知道我正在为自己的知识匮乏向自己解释,非常抱歉。
首先,请原谅我的英语水平和对这方面的了解。
我有这个,它是一个带有 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">×</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>
并且我在主更新面板中添加了一个有条件的更新模式,因为如果不是两者都会更新并且问题将无法解决。
我希望这对需要的人有所帮助,我知道我正在为自己的知识匮乏向自己解释,非常抱歉。