c# asp.net gridview 上方有个新增按钮,点击这个按钮弹出一个aspx页面,下面是父页面按钮代码
protected void BtAdd_Click(object sender, EventArgs e)
{
Response.Write("<script language='javascript'>var result = window.showModalDialog('Default2.aspx',window,'status:no;dialogHeight:400px;dialogWidth:350px;');if(result==1){ alert('刷新了');window.location.reload();}</script>");
}
在子页面中有一个textbox(实际有多个,这个举例一个来说明),和一个按钮,下面是按钮事件
protected void Button1_Click(object sender, EventArgs e)
{
string Vendor = Vendor1.Text.Trim();
string sqlstr = "insert into PriceExcel(Vendor) values('";
if (!string.IsNullOrEmpty(Vendor))
{
sqlstr += Vendor+"')";
}
else
{
Response.Write("<script>alert('供方不能为空,请重新输入!');history.back();</script>");//这里没效果
}
qlcon = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
try
{
//cmd.ExecuteNonQuery();
if (cmd.ExecuteNonQuery() == 1) {
Response.Write("<script language='javascript'>alert('新增价格成功!');</script>");
}
}
catch (Exception erro)
{
//Response.Write("错误" + erro);
return;
}
finally
{
sqlcon.Close();
}
//如果处理成功 时候使用
Response.Write("<script language='javascript'>window.returnVal='1';parent.window.dialogArguments.location.reload();window.close();</script>");
}
子页面前台代码,已加<base target="_self" /><span class="sp"><a class="a11">供 方:</a><asp:TextBox ID="Vendor1" runat="server" CssClass="tb1"></asp:TextBox></span><br />
<span class="sp"><asp:Button ID="Button1" runat="server" Text="确定" CssClass="bt1" OnClick="Button1_Click" /><asp:Button ID="Button2" runat="server" Text="取消" CssClass="bt2" OnClick="Button2_Click" /></span>
现在的问题是:
1、新增后Gridview不刷新。问题是怎样点击“确定”后刷新gridview(网上的解决方法我都看过,请给出代码,及代码位置)
2、在新增时,Vendor为空时,却还能插入,并提示插入成功。(这个是主要问题)问题是,如何终止插入,并返回输入界面(这里我用history.back()没有用,可能是其他地方有错误也有可能),并且不显示错误类似于“404”的内容在页面上。(这里数据库表中是允许该字段为空的,因为该字段为新增字段,以前的列数据都为空。)谢谢大家asp.netc#showmodaldialoggridviewjs
protected void BtAdd_Click(object sender, EventArgs e)
{
Response.Write("<script language='javascript'>var result = window.showModalDialog('Default2.aspx',window,'status:no;dialogHeight:400px;dialogWidth:350px;');if(result==1){ alert('刷新了');window.location.reload();}</script>");
}
在子页面中有一个textbox(实际有多个,这个举例一个来说明),和一个按钮,下面是按钮事件
protected void Button1_Click(object sender, EventArgs e)
{
string Vendor = Vendor1.Text.Trim();
string sqlstr = "insert into PriceExcel(Vendor) values('";
if (!string.IsNullOrEmpty(Vendor))
{
sqlstr += Vendor+"')";
}
else
{
Response.Write("<script>alert('供方不能为空,请重新输入!');history.back();</script>");//这里没效果
}
qlcon = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
try
{
//cmd.ExecuteNonQuery();
if (cmd.ExecuteNonQuery() == 1) {
Response.Write("<script language='javascript'>alert('新增价格成功!');</script>");
}
}
catch (Exception erro)
{
//Response.Write("错误" + erro);
return;
}
finally
{
sqlcon.Close();
}
//如果处理成功 时候使用
Response.Write("<script language='javascript'>window.returnVal='1';parent.window.dialogArguments.location.reload();window.close();</script>");
}
子页面前台代码,已加<base target="_self" /><span class="sp"><a class="a11">供 方:</a><asp:TextBox ID="Vendor1" runat="server" CssClass="tb1"></asp:TextBox></span><br />
<span class="sp"><asp:Button ID="Button1" runat="server" Text="确定" CssClass="bt1" OnClick="Button1_Click" /><asp:Button ID="Button2" runat="server" Text="取消" CssClass="bt2" OnClick="Button2_Click" /></span>
现在的问题是:
1、新增后Gridview不刷新。问题是怎样点击“确定”后刷新gridview(网上的解决方法我都看过,请给出代码,及代码位置)
2、在新增时,Vendor为空时,却还能插入,并提示插入成功。(这个是主要问题)问题是,如何终止插入,并返回输入界面(这里我用history.back()没有用,可能是其他地方有错误也有可能),并且不显示错误类似于“404”的内容在页面上。(这里数据库表中是允许该字段为空的,因为该字段为新增字段,以前的列数据都为空。)谢谢大家asp.netc#showmodaldialoggridviewjs
如果是你新开窗口,添加后返回请求页就可以了。
2、把 history.back() 换成 return 试一下。
2、return表示没用,如何终止插入呢,有没有高人解答
你的代码不是我说的方案的代码。
你在添加成功里也没有重新绑定数据。
代码比较不规范,数据操作不应该放在button事件中。
新开窗口的数据处理后 Response.Redirect 到原请求页面就可以刷新了。
你的代码不是我说的方案的代码。
你在添加成功里也没有重新绑定数据。
代码比较不规范,数据操作不应该放在button事件中。
新开窗口的数据处理后 Response.Redirect 到原请求页面就可以刷新了。
刷新自己改好了,关键是新增啊,新增的记录是错误的,还增进去了,这让人怎么活啊,输入为空怎么控制。还有数据操作那写在哪里啊?用response.redirect没做出来,初学者,纯粹业余时间学习。我用location.href=location.href就好了,去掉了reload(),我bind()方法没有写上去,以前写上去了,会弹出重复加载,就被我删掉了。现在也加上去了
突然发现我的刷新没刷新,要刷新还是要弹出提示。
突然发现我的刷新没刷新,要刷新还是要弹出提示。你不就是原来的网页没有刷新吗?你先看看数据库里面的内容改了没?如果改了,说明新增已经成功了,只是网页没刷新,opener对象可以获得原来的网页URL,用JS文件刷新一下就行了,或者重新载入。
这是一行啊,怎么不能执行了
(这个我不着调怎么去掉,刚才换了那个,结果是没有刷新)
请注意我代码的位置,“刷新了”在父页面,“新增价格成功”在子页面啊。新增的问题是我为空新增进去了,怎么让为空时禁止新增。
不过你新增用的back,你调试一下试试,后面的代码还执行不执行了
就是这句
qlcon = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
{
sqlstr += Vendor+"')";
}
else
{
return ""; //在这里return结束语句,这样应该就不会再执行下面的代码了,
Response.Write("<script>alert('供方不能为空,请重新输入!');history.back();</script>");//这里没效果
}
有没有第1个刷新问题会的。
我的代码是这样写的
/// <summary>
/// 呈现网页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Page_PreRender(object sender, System.EventArgs e)
{
BindTermCourse();
lblTitle.Text = Utility.GetYearTermName(Utility.selectTerm) + Session["MajorName"].ToString();
lblInfo.Text = "(" + Utility.selectStage + @"阶段)若无“选课”标志,1、可能不在选课阶段2、未完成重修课程报名,请点击<a href=""ReupSelectCourse.aspx"">报名</a>";
}这个函数中的,好早之前写的了,不过应该没什么影响才对。如果你放在!page.ispostback中绑定数据,理论上来讲应该是没用的