我的javascript:
/* Modal */
function DefaultModal() {
$(".ModalBox").dialog("open");
}
$(function () {
// Modal.
$(".ModalBox").dialog({
autoOpen: false,
height: 410,
resizable: false,
draggable: false,
width: 602,
modal: true,
open: function (type, data) {
// include modal into form
$(this).parent().appendTo($("form:first"));
},
buttons: {
"Confirm": function () {
}
},
close: function () {
//clear all text.
$(this).find(':text').val('');
}
});
});
我有两种方法来调用我的模态:
这一个完美无缺:
<li><a href="javascript:void(0)" onclick="DefaultModal();">ADD contact</a></li>
而这一个,不是。 我需要一个按钮,从我的临时表编辑到我的模态。
<asp:GridView ID="gvContato" runat="server" AutoGenerateColumns="False" OnRowCommand="RunComm"
DataKeyNames="IDCliente" AllowPaging="True" PageSize="10" Width="600px">
<Columns>
<asp:BoundField DataField="IDCliente" Visible="false" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
<asp:BoundField DataField="Email" HeaderText="E-mail" SortExpression="Email" />
<asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit">
<ItemStyle HorizontalAlign="Center" />
</asp:ButtonField>
</Columns>
</asp:GridView>
protected void RunComm(object sender, GridViewCommandEventArgs e)
{
int IDSelecionado = (int)gvContato.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0];
switch (e.CommandName)
{
case "Edit":
if (IDSelecionado > 0)
{
ScriptManager.RegisterClientScriptBlock(this.upModalContato, this.upModalContato.GetType(), "Modal", "DefaultModal();", true);
}
break;
}
}
我的编辑按钮正在执行此操作:
他打开我的对话框,但也将它显示在我的身体中(不仅是模态,还是我的gridview下面的DIV)。除此之外,如果我继续打开和关闭我的对话框(使用我的编辑按钮)而不保存信息,他会继续在我的所有文本框中创建逗号;就像你在javascript中做一些数组一样。
我不知道为什么!?
有什么想法吗?我不确定我是否能在这里理解,如果没有,请告诉我,我失踪了。
谢谢,问候。
编辑:
PS:我正在使用UpdatePanel!
EDIT2:TYPO
EDIT3:我为什么这样做?
我的目标:
在所有更改之后,将最终数据(临时数据和实数数据)保存在我的数据库中。
为实现这一点,我将我的数据保存在我的视图状态(我知道很糟糕,但我现在没有想法)
按照@NerdFury解决方案,我做了这个:(这仍然无法正常工作!他打开模态,但不会在字段中加载数据。此代码也打开我的表(模态)我的html正文,包含数据。)
CSHARP:
protected void btnEditModal_Click(object sender, EventArgs e)
{
this.ddlDepartamentoContato.SelectedIndex = 1;
this.ddlCargoContato.SelectedIndex = 2;
this.ckAprovadorContato.Checked = true;
}
HTML:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnEditModal" runat="server" Text="Edit" OnClientClick="DefaultModal();" CausesValidation="false" OnClick="btnEditModal_Click" />
</ItemTemplate>
</asp:TemplateField>
但我仍然遇到模态问题,对话框打开,但表格也出现在屏幕上。我在按钮事件中使用了一些静态数据,看它是否正常工作,并且他将这些数据加载到表中,但不是在模态中。
PS:我认为(至少我相信),问题是什么。ASP:UpdatePanel中
如果我从我的代码中删除它,我将加载数据,一切都运行完美,但它使回发,我的模态几乎没有出现!他只是在我的屏幕上“眨眼”。
看看我的实际代码:
<asp:UpdatePanel ID="upModalContact" runat="server">
<ContentTemplate>
<table>
<tr>
<td>
<ul id="contatoModalButtonList">
<li><a href="javascript:void(0)" onclick="DefaultModal();">Add contact</a></li>
</ul>
</td>
</tr>
<tr>
<td>
<asp:GridView ID="gvContact" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="gvContact_PageIndexChanging"
DataKeyNames="IDCliente" AllowPaging="True" PageSize="10" Width="600px">
<Columns>
<asp:BoundField DataField="IDClient" Visible="false" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
<asp:BoundField DataField="Email" HeaderText="E-mail" SortExpression="Email" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnEditContactmodal" runat="server" Text="Edit" CausesValidation="false" OnClick="btnEditModal_Click" OnClientClick="DefaultModal();" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
并且
<table class="ModalBox" title="Contact">
<tr>
<td colspan="2">
<p class="validateTips"> Fields required (*).</p>
</td>
</tr>
<tr>
<td align="left" width="130px">
<asp:Label Text="Name:" runat="server" ID="lblNameContact" />
</td>
<td>
<asp:TextBox runat="server" ID="txtNameContact" CssClass="classNameContact" Width="400px" MaxLength="50" /> <label>*</label>
</td>
</tr></table>
答案 0 :(得分:2)
在您的标记中,您将CommandName
设置为'Editar',然后在事件处理程序中,您正在检查CommandName
'编辑'。
我没有看到您使用id值的任何地方,但这可能是因为您在最终确定数据/行为之前尝试让弹出窗口首先工作。但我的另一个建议是调查使用模板字段而不是按钮字段,而是使用按钮上的OnClientClick事件。
答案 1 :(得分:1)
我知道!!!
我使用2个更新面板来完成此任务。基于this link(谢谢先生!)
<div class="ModalContact" style="display:none;width:375px;" title="Contact">
<asp:UpdatePanel ID="upModalContact" runat="server">
<ContentTemplate>
<table>
</table>
</ContentTemplate>
</asp:UpdatePanel>
请务必注意,更新面板嵌套在对话框div中。此外,显示列表的GridView也在更新面板
中