首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • gridview 导出含有textbox的列时出错.
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wyj13309
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-21 07:55:32 楼主
    大家好,在用以下代码导出gridview数据时无法导出在gridview中textbox的内容,只能导出显示出的内容,请问如何处理?

    Response.Clear();
      Response.Buffer = true;
      Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
        Response.ContentEncoding = System.Text.Encoding.UTF7;
      Response.ContentType = "application/ms-excel";
      System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
      this.GridView1.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
      Response.Flush();
    Response.End();
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuyi8128
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 07:57:351楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qlk_2007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:06:172楼 得分:0
    你是用模板列的吗,在导出前作一个处理:
    C# code
    /// <summary> /// 处理模板列 /// </summary> /// <param name="gv"></param> public void PrepareGridViewForExport(Control gv)//模式化特殊元素 flashcong { Literal l = new Literal(); string name = String.Empty; for (int i = 0; i < gv.Controls.Count; i++) { if (gv.Controls[i].GetType() == typeof(DropDownList)) { l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(CheckBox)) { l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False"; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(ImageButton)) { if (gv.Controls[i].Visible == true) l.Text = "SOP"; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(Label)) { l.Text = (gv.Controls[i] as Label).Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(TextBox)) { l.Text = (gv.Controls[i] as TextBox).Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } if (gv.Controls[i].HasControls()) { PrepareGridViewForExport(gv.Controls[i]); } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:08:483楼 得分:0
    没搞过!!
    帮你顶!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhaoying
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 15:21:354楼 得分:0
    #region 导出数据

            /// <summary>
            /// 将GridView中的数据原样导出到Excel文件,并且保存到客户端
            /// </summary>
            /// <param name="ctl">需要导出为Excel文件的DataGrid Web控件 </param>
            /// <param name="ExportFileName">文件名 </param>
            public void GridViewToExcel(System.Web.UI.Control ctl, string ExportFileName)
            {
              // string ExportFileName = MakeExcelFileName(Flag);  //生成文件名

                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8) + ".xls");

                HttpContext.Current.Response.Charset = "GB2312";

                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //System.Text.Encoding.UTF8;

                HttpContext.Current.Response.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword

                ctl.Page.EnableViewState = false;

                System.IO.StringWriter tw = new System.IO.StringWriter();

                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

                this.ClearControls(ctl);

                ctl.RenderControl(hw);

                HttpContext.Current.Response.Write(tw.ToString());

                HttpContext.Current.Response.End();
            }

            private void ClearControls(System.Web.UI.Control control)
            {
                for (int i = control.Controls.Count - 1; i >= 0; i--)
                {
                    ClearControls(control.Controls[i]);
                }

                if (!(control is System.Web.UI.WebControls.TableCell))
                {
                    if (control.GetType().GetProperty("SelectedItem") != null)
                    {
                        System.Web.UI.LiteralControl literal = new System.Web.UI.LiteralControl();
                        control.Parent.Controls.Add(literal);
                        try
                        {
                            literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
                        }
                        catch
                        {

                        }

                        control.Parent.Controls.Remove(control);
                    }

                    else

                        if (control.GetType().GetProperty("Text") != null)
                        {
                            System.Web.UI.LiteralControl literal = new System.Web.UI.LiteralControl();
                            control.Parent.Controls.Add(literal);
                            literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control, null);
                            control.Parent.Controls.Remove(control);
                        }
                }
                return;
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wyj13309
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:29:195楼 得分:0
    报错:
    RegisterForEventValidation can only be called during Render();


    Stack Trace:


    [InvalidOperationException: RegisterForEventValidation can only be called during Render();]
      System.Web.UI.ClientScriptManager.RegisterForEventValidation(String uniqueId, String argument) +2128740
      System.Web.UI.WebControls.TextBox.AddAttributesToRender(HtmlTextWriter writer) +729
      System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) +17
      System.Web.UI.WebControls.TextBox.Render(HtmlTextWriter writer) +17
      System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
      System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +130
      System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24
      System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer) +97
      System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
      System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
      System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +130
      System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24
      System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +7
      System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
      System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
      System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer) +605
      System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
      System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
      System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +130
      System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24
      System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +7
      System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer, Boolean renderPanel) +202
      System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer) +30
      System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
      System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
      ys_all_xm.Button41_Click(Object sender, EventArgs e) +170
      System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
      System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
      System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
      System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
      System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
      System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wyj13309
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 07:52:596楼 得分:0
    大家帮帮忙吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wyj13309
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 14:38:097楼 得分:0
    现在程序不报错了,但是导出的Excel文件中textbox的列不能编辑.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ASP_lover
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:14:078楼 得分:0
    该回复于2008-08-24 00:21:39被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wxg22526451
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:45:329楼 得分:0
    http://blog.csdn.net/qlk_2007/archive/2008/07/18/2669392.aspx
    不能编辑试下用Excel设置看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Micao_tong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:51:3910楼 得分:0

    1>去除某控件foreach (GridViewRow rw in this.GridView1.Rows)
            {
                ImageButton ch = ((ImageButton)rw.Cells[6].FindControl("ImageButton1"));
                ch.Visible = false;
            }
    2>導出某控件的值,但控件不導出for (int i = 0; i < gv.Controls.Count; i++)
            {
                LinkButton lb = new LinkButton();
                Literal l = new Literal();
                string name = String.Empty;
                if (gv.Controls[i].GetType() == typeof(ImageButton))
                {
                 
                    gv.Controls.Remove(gv.Controls[i]);

                }
       
                else if (gv.Controls[i].GetType() == typeof(DropDownList))
                {
                    l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
                    gv.Controls.Remove(gv.Controls[i]);
                    gv.Controls.AddAt(i, l);
                }
                if (gv.Controls[i].HasControls())
                {
                    DisableControls(gv.Controls[i]);
                }
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cat_hsfz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 19:17:1111楼 得分:0
    不能导出TextBox。

    你先要理解GridView导出Excel文件的原理,其实就是利用TextBox对HTML <table>的兼容性,把整个 <table>识别为一个Excel表。如果你的 <table>里面有 <input>,Excel自然无法处理。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hy_lihuan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:45:5612楼 得分:0
    你使用文本文件打开看看能不能修改这个文件
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved