我想要做的是让用户向数据库添加一条新记录并弹出一个JQuery对话框,确认新记录已保存。我认为这将是一个简单的练习。我有一个绑定到LINQDataSource的gridview,允许用户查看和编辑现有记录,文本框和按钮添加新代码。
在文件的头部,我有以下内容:
$('#dialog').dialog({
autoOpen: false,
width: 400,
buttons: {
"Ok": function () {
$(this).dialog("close");
}
}
});
并且在我的标记中更进一步:
<div id="dialog" title="New Code Added">
<p>"<asp:Literal runat="server" ID="LiteralNewCode"></asp:Literal>" was successfully added.</p>
</div>
因此,当用户输入新的描述并通过所有验证时,它会被添加到数据库中并且网格视图会被反弹以显示新记录。
protected void ButtonSave_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
CCRCode.Add( <long list of paramters> );
GridCode.DataBind();
IsNewCode = true;
NewDescription = <new description saved to database>;
}
}
现在,这里(我想)我设置了一个布尔属性来指示添加了新描述以及新描述的文本。见下文:
protected bool IsNewCode
{
get { return ViewState["IsNewCode"] != null ? (bool)ViewState["IsNewCode"] : false; }
set { ViewState["IsNewCode"] = value; }
}
private string NewDescription
{
get { return ViewState["NewDescription"] != null ? ViewState["NewDescription"].ToString() : string.Empty; }
set { ViewState["NewDescription"] = value; }
}
这是我放松的方式。我的猜测是我想添加功能以包含类似于:
的代码$('#dialog').dialog('open');
我在page_load事件中添加了一个registerscriptblock方法但是没有用。有任何想法吗?或者我只是完全错了?
感谢。
答案 0 :(得分:2)
没有真正得到你想做的事。但是,我在我的项目中使用jquery很多.NET。这是我的方式,可能会给你一个提示。
foo.aspx.cs
public String ScriptToRun = "$('#dialog').dialog('open');";
在C#代码中更改ScriptToRun的值
foo.aspx
$(document).ready(function() {<%=ScriptToRun %>});
请记住,无论你在后端做了什么,都会生成HTML,Css&amp; javascript到浏览器。
答案 1 :(得分:2)
两种方式:一种是在服务器端代码中编写javascript。或者,定义一个JS方法来显示对话框(比如名为showDialog),并通过以下方式调用它:
Page.ClientScript.RegisterStartupScript(... "showDialog();" ..);
RegisterStartupScript将方法调用放在最后,确保您的脚本位于其上方。您也可以使用document.ready调用它来包装它,以确保正确加载JQuery。
答案 2 :(得分:0)
我认为唯一的想法就是在Dom准备就绪时创建对话框。
$(document).ready(function() {$('#dialog').dialog('open');});
答案 3 :(得分:0)
我在我写的自定义“MessageBox”类的不同问题中发布了代码: ASP.NET Jquery C# MessageBox.Show dialog uh...issue
默认情况下,代码使用javascript alert()函数,但您可以定义回调,以便调用自定义javascript方法来显示消息。