• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ

【100分】疑难问题,请高手围观,不吝赐教!!!!

丰云 技术主管  2012-03-30 01:27:34
在artDialog弹出页面里,有个GridView1,删除功能正常执行,但就是不弹出消息框,也不刷新GridView1
查了好久,也没找到问题在哪里。。。。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "delete")
{
string account = e.CommandArgument.ToString().Trim();
string sql = "delete accounts where Account = @account";
SqlParameter[] p = new SqlParameter[] {
new SqlParameter("@account", account),
};
if (baseclass.ExecuteSql(sql, p) > 0)
{
BindGrid(); //刷新GridView1
ShowMessage("账号删除成功!");
Log.WriteLog("用户:【" + model.Username + "】删除账号【" + account + "】");
}
else
{
ShowMessage("系统忙,请稍后再试!");
Log.WriteLog("用户:【" + model.Username + "】删除账号【" + account + "】失败");
}
}

}
期待高人指点指点,不胜感激!!!
...全文
229 点赞 收藏 29
写回复
29 条回复
丰云 2012年04月24日
好久了,
都忘记结贴咯。。。。
问题解决了,
现在跟大家分享下:

在我改的这本程序里,
GridView1的操作列的按钮控件,
有个属性CommandName="delete"
这个是多余的,
因为它会引发GridView1的delete事件,
而这个GridView1的delete事件是由OnRowCommand触发,
这样会导致两次提交。
因此,去掉这个CommandName="delete"就OK了

改别人的代码,头疼!!
现在是感受深刻啊。。。。。
回复 点赞
shumark 2012年03月31日
ShowMessage("账号删除成功!");
是服务器端执行还是客服端执行的?
回复 点赞
IssacChow 2012年03月31日
你应该失败会有提示的!!!!!
你可以这样,不管成功失败,只有最后的时候才bind()
我做的全选删除也是这样的,因为绑定的过早,结果只能删除一项!
改改,到外面再bind()就可以了
回复 点赞
阿非 2012年03月31日
弄个能复现问题的下载链接
回复 点赞
小小农民 2012年03月31日
BindGrid(); //刷新GridView1
会不会是再绑定时没有把GridView1原来值清空啊!
回复 点赞
壁橱里的老王 2012年03月31日

重新绑定BindGrid()要先清空之前的。
baseclass是你自己写的吧,这个的返回值是什么?是大于0的整数吗?
debug 看看有没有异常,或者try catch 把异常输出看看
回复 点赞
壁橱里的老王 2012年03月31日
[Quote=引用 2 楼 的回复:]

string sql = "delete accounts where Account = @account";
sql语句少个from 能正常删除??
[/Quote]没有from 可以的
回复 点赞
lhk 2012年03月31日
BindGrid(); 这个方法应该谁在删除成功以后在调吧?
回复 点赞
wangchunfangs 2012年03月31日

改成
ScriptManager.RegisterStartupScript(this, this.GetType(), "str", "<script>alert('账号删除成功')</script>", false);
回复 点赞
真相重于对错 2012年03月30日
你这种方式最好用ajax,前台就管前台,后台就管后台
回复 点赞
肖无疾 2012年03月30日
你的弹窗方式不会刷新
回复 点赞
丰云 2012年03月30日
这个问题根本在于后台代码和前台页面互动的问题
回复 点赞
丰云 2012年03月30日
请大家看我11楼的回复,
不要再在ShowMessage上面纠结了。。。。。
回复 点赞
E次奥 2012年03月30日


ShowMessage是在这个页面上定义的吗?还是系统?

回复 点赞
呆子罗 2012年03月30日
[Quote=引用 2 楼 的回复:]

string sql = "delete accounts where Account = @account";
sql语句少个from 能正常删除??
[/Quote]
SQL Server里面是可以删除
ACCESS下面就要加个from
回复 点赞
事理 2012年03月30日
是否有用到ajax,ajax中提示消息是不同的


/// <summary>
/// Page.ClientScript.RegisterStartupScript提示消息
/// 模版页中提示消息不能用此方法,消息中有换行如\r\n,替换成\\r\\n
/// MessageBox.Show( "register", "消息内容!",this);
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="key">要注册的要启动脚本的键,相当于提示消息的一个函数的名字</param>
/// <param name="page">当前页面对象,一般传入this</param>
public static void Show(string message, string key, Page page)
{
if (!page.ClientScript.IsClientScriptBlockRegistered(key))
page.ClientScript.RegisterStartupScript(page.GetType(), key, JavaScript_Head + "alert('" + message + "')" + JavaScript_Foot);
}

/// <summary>
/// ScriptManager.RegisterStartupScript提示消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="key">要注册的要启动脚本的键,相当于提示消息的一个函数的名字</param>
/// <param name="updatePanel">UpdatePanel对象</param>
public static void Show(string message, string key, UpdatePanel updatePanel)
{
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.Page.GetType(), key, "alert('" + message + "');", true);
}
回复 点赞
EnForGrass 2012年03月30日
[Quote=引用 12 楼 的回复:]

现在甚至怀疑是不是ASP.NET的运行机制导致的。。。。
[/Quote]
这倒不会,肯定那地方出问题了
回复 点赞
丰云 2012年03月30日
现在甚至怀疑是不是ASP.NET的运行机制导致的。。。。
回复 点赞
丰云 2012年03月30日
[Quote=引用 7 楼 的回复:]

BindGrid(); //刷新GridView1

ShowMessage("账号删除成功!");

从你的先后顺序看 先走了 bind 重新绑定

你先弹出对话框 再刷新 试试

或者先不弹框 看看能不能 bind()方法刷新
[/Quote]
这些都试过了,
包括删除成功后什么都不做,
直接
Response.Write("xxxxx");
Response.End();
都没反应。。。。
回复 点赞
真相重于对错 2012年03月30日
Reponse.Expire=-1????
回复 点赞
发动态
发帖子
.NET技术社区
创建于2007-09-28

4.9w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告