我的页面是这样的——是一个后台的管理界面,上面有一个添加的输入框和按钮,点击按钮后执行Button1_Click,向DataGrid里插入一条记录。另外DataGrid里我加了一个asp:ButtonColumn按钮列,点击可执行将当前表的一行数据复制到另外一个结构类似的表。功能都写好了,但就是执行成功后,页面会变成一个白色的代码页面,里面全部是当前页面的HTML文档,如下<script language='JavaScript'>window.alert('复制成功!');</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
作品列表
</title><link href="BobAdmin.css" rel="stylesheet" type="text/css" /></head>
<body>
<form name="form1" method="post" action="ArList.aspx" id="form1">
<div>
……上面那个复制成功的警告提示并不出现。添加的时候也碰到这个问题,添加成功后,也会变成这种纯HTML的页面
Button1_Click里我是这么解决的,在最后的comm.ExecuteNonQuery()执行后我加上用Response.Redirect("ArList.aspx"),页面就会正常,如果换成DataListDataBind()就没用。
添加还不是问题,因为强制Response.Redirect到这个页面后,最新添加的记录永远都是在第一条,不存在翻页的问题,但是那个DataGrid1_ItemCommand的执行就非常麻烦,每次都要回到第一页。这个问题最近困扰我很久了。我以前在server2003的机器上做开发,没碰到过这种问题,comm.ExecuteNonQuery()后DataListDataBind()页面都能正常,同样的代码写法,换在我现在的server2008上就会有我上面的问题。
求助!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
作品列表
</title><link href="BobAdmin.css" rel="stylesheet" type="text/css" /></head>
<body>
<form name="form1" method="post" action="ArList.aspx" id="form1">
<div>
……上面那个复制成功的警告提示并不出现。添加的时候也碰到这个问题,添加成功后,也会变成这种纯HTML的页面
Button1_Click里我是这么解决的,在最后的comm.ExecuteNonQuery()执行后我加上用Response.Redirect("ArList.aspx"),页面就会正常,如果换成DataListDataBind()就没用。
添加还不是问题,因为强制Response.Redirect到这个页面后,最新添加的记录永远都是在第一条,不存在翻页的问题,但是那个DataGrid1_ItemCommand的执行就非常麻烦,每次都要回到第一页。这个问题最近困扰我很久了。我以前在server2003的机器上做开发,没碰到过这种问题,comm.ExecuteNonQuery()后DataListDataBind()页面都能正常,同样的代码写法,换在我现在的server2008上就会有我上面的问题。
求助!
解决方案 »
- 请教下asp.net forms身份验证FormsAuthenticationTicket问题
- 获取不同进程界面的控件句柄问题
- C#设置TextBox全选问题
- 如何调用一个软件中某个dll,使其可以在无此软件的机子上调用?
- 如何在客户端修改WebService指向?
- 关于软件测试的两个例子,救命啊。。。(请大家帮忙啊)
- 如何将HTML转换为可储存的格式(储存在备注字段)?需要如何转换?例如将"……"转换为"……",将"—"转换为"—"?
- 关于contextMenu(上下文菜单)的怪问题
- WCF,初学,什么是客户端代理类
- 一个关于sql语句写法的问题
- 在SQLServer中怎样设置字段为自增
- 请教一个关于按钮图像的问题
IE8.0下会有问题,IE6和7都OK,请问如何解决?
给出解决办法的分照样给!!!!!
我试了这种简单的方法,结果不起作用。
并不是所有的Button1_Click执行都有问题,如果只是一些文字输入框,就没问题;但凡是和图片相关的,就会有我之前叙述的问题
下面我贴一个出问题的页面,这个页面最上面是2个输入框,代码如下:
图片上传:<asp:fileupload runat="server" id="FileUpload1" Width="400px"></asp:fileupload>
文字标题:<asp:TextBox ID="PicTitle" runat="server" Width="300px" MaxLength="200"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />Button1_Click的代码如下:
各位大大辛苦了,我刚才在仔细研究我写的代码,突然发现我之前没表达清楚。
并不是所有的Button1_Click执行都有问题,如果只是一些文字输入框,就没问题;但凡是和图片相关的,就会有我之前叙述的问题
下面我贴一个出问题的页面,这个页面最上面是2个输入框,代码如下:图片上传:<asp:fileupload runat="server" id="FileUpload1" Width="400px"></asp:fileupload>
文字标题:<asp:TextBox ID="PicTitle" runat="server" Width="300px" MaxLength="200"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />
Button1_Click的代码如下:protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "";
if (FileUpload1.PostedFile.FileName != "")
{
string yyyyMM = DateTime.Now.ToString("yyyyMM");
string StrSavePathRoot = "~/uploadfile/image/";
string SavePath = Server.MapPath(StrSavePathRoot) + yyyyMM;
if (!Directory.Exists(SavePath))
Directory.CreateDirectory(SavePath); string ImgPath = FileUpload1.PostedFile.FileName;
string exName = ImgPath.Substring(ImgPath.LastIndexOf(".") + 1).ToLower();//找出图片的后缀名
string ImgName = DateTime.Now.ToString("ddHHmmssfff") + "." + exName;
string ImgExtend = ImgPath.Substring(ImgPath.LastIndexOf(".") + 1);
if (!(ImgExtend.ToLower() == "jpg" || ImgExtend.ToLower() == "jpeg"))
{
Label1.Text = "上传图片的格式不正确!必须是jpg格式的图片。";
return;
} FileUpload1.PostedFile.SaveAs(SavePath + "\\" + ImgName); //上传原始图片
FileUpload1.Dispose(); string ServerPath = StrSavePathRoot + yyyyMM + "/"; //计算应该显示的大小尺寸
System.Drawing.Image ImgSize = System.Drawing.Image.FromFile(Server.MapPath(ServerPath) + ImgName); //获取图片长宽 ****当上传了非图片格式的文件,会报错
int ImgSizeWidth = 1200, ImgSizeHeight = 1200; //设定图片最大尺寸规则
if (ImgSize.Width > ImgSizeWidth || ImgSize.Height > ImgSizeHeight)
{
Label1.Text = "上传图片的尺寸不符合规格!请修改大小!(长宽不得超过1200像素)";
//删除照片,以免没用的数据占用空间
ImgSize.Dispose();
GC.Collect(); //强迫通用语言运行时进行启动垃圾收集线程进行回收工作
string VirtualPath = StrSavePathRoot + ImgName + "." + ImgExtend.ToLower();
System.IO.File.Delete(Server.MapPath(VirtualPath)); //删除图
return;
}
else
{
GetThumbnailImage4(ServerPath, ImgName, ImgExtend.ToLower(), 75, 3); //先缩小到一个短边为75的略缩图,然后截取多余部分,取当中的小方图
} string StrPicTitle = Request.Form["PicTitle"].Replace("'", "''"); string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"];
SqlConnection conn = new SqlConnection(strCon);
//string id = DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString();
SqlCommand comm = new SqlCommand("insert into PicList(PicName,PicTitle) values(@PicName,@PicTitle)", conn); SqlParameter parm2 = new SqlParameter("@PicName", SqlDbType.VarChar, 30);
SqlParameter parm3 = new SqlParameter("@PicTitle", SqlDbType.VarChar, 200);
parm2.Value = yyyyMM + "/" + ImgName;
parm3.Value = this.PicTitle.Text;
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3); //判断输入框不能输入超长
if (System.Text.Encoding.Default.GetBytes(parm3.Value.ToString()).Length <= 200)
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataListDataBind(); //写这句就会发生问题!!!!!!!!!!!!!!!
//Response.Redirect("PicList.aspx"); //我以前一直是加这句解决的!!!!!
}
else
{
Label1.Text = "输入文字超过规定长度!";
} }
else
{
Label1.Text = "必须为作品上传图片!";
return;
}}我最上面描述的那个DataGrid1_ItemCommand,除了数据字段读取、插入至另外一个表外,也包括一个带有图片处理的功能,和我现在贴的这个类似。