积极答复者
页面跳转问题

问题
-
代码
//删除选定
protected void LnkDelete_Click(object sender, EventArgs e)
{
for (int i = 0; i < GVCp.Rows.Count; i++)
{
bool isChecked = ((CheckBox)GVCp.Rows[i].FindControl("CheckSingle")).Checked;
if (isChecked)
{
string strSql = "Delete From Company Where [id]=" + GVCp.DataKeys[i].Value + "";
DB.RunExecuteNonQuery(strSql);
}
}
Response.Write("<script>window.location.href='company.aspx';</script>");
// Response.Redirect("company.aspx");
}
这个是我删除gridview上 选择checkbox 后点删除按钮执行的代码,我想删除后页面刷新本页起到更新作用,但是我用 Response.Write("<script>window.location.href='company.aspx';</script>");
// Response.Redirect("company.aspx"); 这2个 那个删除后页面都没刷新 要自己点ie上刷新才更新数据.我以前做的时候同样写法都可以.但是设置断点执行却有执行跳转页面代码.为什么那
不用羡慕----那,只是个传说!
答案
-
楼主,你好,
问题出现在(测试通过)不属于跳转的问题,
public static int RunExecuteNonQuery(string strSql)
{
OleDbConnection SqlCon1 = new DB().GetCon();
//OleDbCommand cmd = CreateCmd(strSql); //失败
//OleDbCommand cmd = CreateCmd(strSql,SqlCon1); //成功
int i = (int)cmd.ExecuteNonQuery();
SqlCon1.Close();
return i;
}
调用CreateCmd(strSql)方法时,方法里面也有一个OleDbConnection Con = new DB().GetCon();对象,
但是SqlCon1对象在这里就变得没有任何作用,只是开了,然后关了,但是,对于Con对象,始终没有关闭。
其他地方没有修改,就是调用你的另外一个重载方法就成功了,
同时,Response.Redirect("Company.aspx"); 可以采用,GVCp.DataBind();
jon.valett@gmail.com- 已建议为答案 邹俊才Moderator 2009年4月10日 16:35
- 已标记为答案 KeFang Chen 2009年4月14日 7:28
全部回复
-
我发现
DB db=new DB();
for (int i = 0; i < GVCp.Rows.Count; i++)
{
bool isChecked = ((CheckBox)GVCp.Rows[i].FindControl("CheckSingle")).Checked;
if (isChecked)
{
string strSql = "Delete From Company Where [id]=" + GVCp.DataKeys[i].Value + "";
// DB.RunExecuteNonQuery(strSql);
OleDbCommand cmd = new OleDbCommand(strSql,db.GetCon());
cmd.ExecuteNonQuery();
db.GetClose();
}
}
Response.Redirect("Company.aspx");也就是说我不用DB.RunExecuteNonQuery(strSql);这个方法执行.单纯的写 却能跳转
用DB.RunExecuteNonQuery(strSql);却有问题
public OleDbConnection Con = null;
public OleDbConnection GetCon()
{
try
{
//设置连接数据库字符串
Con = new OleDbConnection(ConfigurationManager.AppSettings["connection"]);
if (Con.State == ConnectionState.Closed)
{
Con.Open();//打开连接
}
return Con;
}
catch (Exception ee)
{
return null;
}
}
public static OleDbCommand CreateCmd(string strSql)
{
OleDbConnection Con = new DB().GetCon();
if (Con.State.Equals(ConnectionState.Closed))
{
Con.Open();
}
OleDbCommand cmd = new OleDbCommand();
try
{
cmd.Connection = Con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSql;
}
catch (Exception ee)
{
throw new Exception(ee.Message);
}
return cmd;
}
public static int RunExecuteNonQuery(string strSql)
{
OleDbConnection Con = new DB().GetCon();
OleDbCommand cmd = CreateCmd(strSql);
int i = (int)cmd.ExecuteNonQuery();
Con.Close();
return i;
}
这些是DB.RunExecuteNonQuery(strSql); 用到的方法.. 为啥用调用方法就有我说的问题.单纯写发就可以有效果
不用羡慕----那,只是个传说! -
-
楼主,你好,
问题出现在(测试通过)不属于跳转的问题,
public static int RunExecuteNonQuery(string strSql)
{
OleDbConnection SqlCon1 = new DB().GetCon();
//OleDbCommand cmd = CreateCmd(strSql); //失败
//OleDbCommand cmd = CreateCmd(strSql,SqlCon1); //成功
int i = (int)cmd.ExecuteNonQuery();
SqlCon1.Close();
return i;
}
调用CreateCmd(strSql)方法时,方法里面也有一个OleDbConnection Con = new DB().GetCon();对象,
但是SqlCon1对象在这里就变得没有任何作用,只是开了,然后关了,但是,对于Con对象,始终没有关闭。
其他地方没有修改,就是调用你的另外一个重载方法就成功了,
同时,Response.Redirect("Company.aspx"); 可以采用,GVCp.DataBind();
jon.valett@gmail.com- 已建议为答案 邹俊才Moderator 2009年4月10日 16:35
- 已标记为答案 KeFang Chen 2009年4月14日 7:28
-
邹俊才:谢谢按照你说的我测试,完全解决拉..
我昨天搞了半天不知道什么问题.最后我把数据库连接方法改成 静态的,用静态的就没出现这个问题
public static OleDbConnection Con = null;
public static OleDbConnection GetCon()
{
try
{
//设置连接数据库字符串
Con = new OleDbConnection(ConfigurationManager.AppSettings["connection"]);
if (Con.State == ConnectionState.Closed)
{
Con.Open();//打开连接
}
return Con;
}
catch (Exception ee)
{
return null;
}
}
public static void GetClose()
{
if (Con.State == ConnectionState.Open)
{
Con.Close();//关闭数据库连接
Con.Dispose();//释放资源
}
}
public static int RunExecuteNonQuery(string strSql)
{
OleDbConnection SqlCon = GetCon();
OleDbCommand cmd = CreateCmd(strSql);
int i = (int)cmd.ExecuteNonQuery();
GetClose();
return i;
}
但是有个问题.数据库连接 用静态的.当多用户访问的时候的.会不会有问题..
不用羡慕----那,只是个传说!