Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在导出到Word文档期间尝试修改gridview布局_C#_Asp.net - Fatal编程技术网

C# 在导出到Word文档期间尝试修改gridview布局

C# 在导出到Word文档期间尝试修改gridview布局,c#,asp.net,C#,Asp.net,我试图在代码中添加一个函数,将Gridview导出到word文档。以下是我用于导出Gridview的代码供参考: Response.AddHeader("content-disposition", "attachment;filename=Export.doc"); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "applicatio

我试图在代码中添加一个函数,将Gridview导出到word文档。以下是我用于导出Gridview的代码供参考:

        Response.AddHeader("content-disposition", "attachment;filename=Export.doc");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";

        StringWriter stringWrite = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        HtmlForm frm = new HtmlForm();
        GridView1.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView1);
        frm.RenderControl(htmlWrite);

        Response.Write(stringWrite.ToString());
        Response.End();
作为记录,我没有写这段代码,所以如果你想知道为什么它是一种特定的方式,我不知道

无论如何,我需要解决此导出中的三个问题:

  • 表格中的单元格仅导出为两个字符宽;这自然会使桌子不可读。我怀疑解决这个问题的方法是使用“Gridview1.Styles.Add(…)”或向Gridview1添加Css类,但我的尝试失败了

  • 在网站上,Gridview已启用排序。我想避免将列标题中的这些超链接转换为word文档

  • 在网站上,Gridview在每一行上都有“编辑”和“删除”功能(最左边的列,如果有关系的话)。我想从word文档导出中排除此列

  • 任何人在这些问题上给予的任何帮助都将不胜感激

        Response.AddHeader("content-disposition", "attachment;filename=Export.doc");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";
    
        StringWriter stringWrite = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    
        HtmlForm frm = new HtmlForm();
    
        /*--------------*/
        GridView1.Columns(0).Visible = false; //HIDE EDIT
        GridView1.Columns(1).Visible = false; //HIDE DELETE
        GridView1.AllowSorting = false; //Disable Sorting
        GridView1.DataBind();
        /*--------------*/
    
        GridView1.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView1);
        frm.RenderControl(htmlWrite);
    
        Response.Write(stringWrite.ToString());
        Response.End();
    

    我不太清楚你在问题1中所说的是什么,但也许可以尝试禁用列上的换行<代码>properteColumn.Wrap=false

    对于第一个问题,您是在谈论gridview还是word文档中的表格单元格?谢谢Nikita,该解决方案效果很好(尽管我不需要在这里进行数据绑定,因为gridview已绑定到其他地方的数据源,但我知道您不知道这一点。)我在问题1中寻找的是一种调整列宽度的方法,即使是单独调整。我尝试了“GridView1.Columns[1].ItemStyle.Width=200;”,但没有更改。gridview是动态创建的还是在aspx中创建的?您是在尝试更改网站gridview列本身的宽度,还是仅在导出时更改?仅在导出时更改;Gridview在aspx代码中,我将列宽设置为我想要的。这正是我遇到的问题。请尝试在
    GridView1.AllowSorting=false之后设置宽度并包括
    GridView1.DataBind()用于导出