C#中gridview已经读取了Excel的数据,但是在主界面上未显示出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中gridview已经读取了Excel的数据,但是在主界面上未显示出来相关的知识,希望对你有一定的参考价值。

在一个工程里面,有一个主界面,一旦运行这个程序,就生成了一个主界面,操作全部在主界面里。现在我在主界面上定义了一个按钮,只要点击这个按钮就可以把Excel的数据读取到gridview窗口中(这个窗口不在主界面上)。现在执行了程序,在主界面点击这个按钮,但是不能弹出单独的gridview窗口(与主界面相互独立),虽然已经将Excel数据读取到了gridview,但是操作过程始终显示主界面,不能弹出单独的gridview窗口(其中已包含读取的数据),请问用什么语句弹出单独的单独的gridview窗口(其中已包含读取的数据)?

2种方法:
1、使用链接,打开新窗口_blank;
2、使用window.open,打开链接地址;
打开的都是另外一个页面,显示gridview用的。
参考技术A BS结构 使用 javascript 控制,
window.open
在 这按钮的 onclientclick DOM事件中控制
参考技术B this.xxx.show() 参考技术C show
showdialog都不行么?

C# GridView 导出Excel表

出错1:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
解决方案:在后台文件中重载VerifyRenderingInServerForm方法,如:
public override void VerifyRenderingInServerForm(Control control)
{
}

出错2:只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render();

解决方案:在源中,添加红色部分<%@ Page Language="C#" EnableEventValidation = "false"CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %>

另外,在使用时,把GRIDVIEW获取数据的方法getdata()写成public DataSet  getdata(),return 一个DS,

调用事件里,实例化一个DATASET, 让它值等于DS,

protected void btnExcel_Click(object sender, EventArgs e)
        {
            grid.AllowPaging = false;
            grid.AllowSorting = false;
            grid.Columns[7].Visible = false;
            GridBindAll();
            DateTime dt = DateTime.Now;
            string str = dt.ToString("yyyyMMddhhmmss");
            str = str + ".xls";
            GridViewToExcel(grid, "application/ms-excel", str);

            grid.AllowPaging = true;
            grid.AllowSorting = true;
            grid.Columns[2].Visible = true;
            GridViewBind();
            // Export(gvRecord, "application/ms-excel", str);
        }
        /// <summary>
        /// 将网格数据导出到Excel
        /// </summary>
        /// <param name="ctrl">网格名称(如GridView1)</param>
        /// <param name="FileType">要导出的文件类型(Excel:application/ms-excel)</param>
        /// <param name="FileName">要保存的文件名</param>
        public static void GridViewToExcel(Control ctrl, string FileType, string FileName)
        {
            HttpContext.Current.Response.Charset = "GB2312";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//注意编码
            HttpContext.Current.Response.AppendHeader("Content-Disposition",
                "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
            HttpContext.Current.Response.ContentType = FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
            ctrl.Page.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            ctrl.RenderControl(hw);
            HttpContext.Current.Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />" + tw.ToString());
            HttpContext.Current.Response.End();

        }
        public override void VerifyRenderingInServerForm(Control control)
        {
            //base.VerifyRenderingInServerForm(control);
        }

 注意:只是导出了在GridView中的列,没有把数据库中的其它没有展示的列都导出。

以上是关于C#中gridview已经读取了Excel的数据,但是在主界面上未显示出来的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.NET怎么手动给GridView赋值,不从数据库中读取?

C# GridView导出excel和word文件

C# GridView 导出Excel表

ASP.NET C#中如何在excel中下载gridview,即如何在datatable中使用group by

C# winform gridview 代码转为下拉选择框

C# 中dev gridview怎么在最左边显示序号,如图显示