我的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;
}
}
我的编辑按钮正在这样做:
他打开了我的对话框,但也将它显示在我的身体中(不仅作为模态,而且作为我的网格视图下方的 DIV)。除此之外,如果我继续打开和关闭我的对话框(使用我的编辑按钮)而不保存信息,他会继续在我的所有文本框中创建逗号;就像你在 javascript 中做一些数组一样。
我不知道为什么!?
有任何想法吗?我不确定我是否在这里让自己可以理解,如果没有,请告诉我我失踪了。
感谢和问候。
编辑:
PS:我正在使用更新面板!
EDIT2:错字
EDIT3:我为什么要这样做?
我的目标:
- 使用我的数据库中的数据(真实数据)加载一个 gridview。
- 放入从我的模态(临时数据)保存的这个gridview临时数据。
- 永久排除/编辑(在模式中)我的临时数据。
- 暂时排除/编辑(在模式中)我的真实数据。
完成所有更改后,将最终数据(临时数据和真实数据)保存在我的数据库中。
为了实现这一点,我将我的数据保存在我的视图状态中(我知道很糟糕,但我现在没有想法)
遵循@NerdFury解决方案,我做了这个:(这仍然不能按我的需要工作!他打开了模式,但没有加载字段中的数据。这段代码也可以在我的 html 正文中打开我的表(模式),使用数据。)
夏普:
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:更新面板
如果我从我的代码中删除它,我将加载数据并且一切正常,但是它会进行回发,并且我的模态几乎不会出现!他只是在我的屏幕上“眨眼”。
看看我的实际代码:
<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>