我的页面是这样的——是一个后台的管理界面,上面有一个添加的输入框和按钮,点击按钮后执行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上就会有我上面的问题。
求助!

解决方案 »

  1.   

    这个是因为用了Ajax框架导致的吗?如果用了UpdatePannel就不应该使用Response.Writer()吧,脚本的执行应该用ScriptManager来做
      

  2.   

    经过测试,发现了问题——非服务器端的问题,是客户端
    IE8.0下会有问题,IE6和7都OK,请问如何解决?
    给出解决办法的分照样给!!!!!
      

  3.   

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    我试了这种简单的方法,结果不起作用。
      

  4.   

    各位大大辛苦了,我刚才在仔细研究我写的代码,突然发现我之前没表达清楚。
    并不是所有的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,除了数据字段读取、插入至另外一个表外,也包括一个带有图片处理的功能,和我现在贴的这个类似。