如何将ASP.NET GridView复制到剪贴板

时间:2010-12-15 21:00:41

标签: c# asp.net gridview clipboard

是否有人有解决方案/链接将GridView / Datatable(Web应用程序aspx)的内容复制到剪贴板,以便我可以在Excel中粘贴?

我尝试过搜索但只找到了Forms应用程序的解决方案。

3 个答案:

答案 0 :(得分:1)

这里有一些代码可以帮助你们将网格视图的数据放入剪贴板,这样就可以粘贴到Excel中了。

ClientScriptManager csm;
StringBuilder sb;
string stringToAppend;
int currentPage;

csm = Page.ClientScript;
sb = new StringBuilder();

// headers
foreach (DataControlField dcf in gvClass.Columns)
{
    sb.Append(dcf.HeaderText + "\t");
}

sb.Append("\\n");
currentPage = gvClass.PageIndex;

for (int i = 0; i < gvClass.PageCount; i++)
{
    gvClass_PageIndexChanging(null, new GridViewPageEventArgs(i));

    foreach (GridViewRow gvr in gvClass.Rows)
    {
        foreach (TableCell tc in gvr.Cells)
        {
            if (tc.Controls.Count > 0)
            {
                stringToAppend = ((LinkButton)tc.Controls[0]).Text;
                sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend) + " \t");
            }
            else
            {
                stringToAppend = tc.Text;
                sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend) + " \t");
            }   
        }
        sb.Append("\\n");
    }
}

gvClass_PageIndexChanging(null, new GridViewPageEventArgs(currentPage));

// Javascript that sets the clipboard to the stringbuilders value
csm.RegisterClientScriptBlock(typeof(Page), "copy",
"<script language=\"javascript\" type=\"text/javascript\"> " +
"window.clipboardData.setData(\"Text\", \"" + sb.ToString() + "\"); " +
"</script>");

答案 1 :(得分:0)

将内容复制到剪贴板的唯一可靠方法是使用Flash Player。这是一个开始:

http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx

答案 2 :(得分:0)

听起来你对gridview很困惑。它与你描述的内容无关。您需要谷歌如何使用C#将数据导出到Excel。您可以创建一个链接或按钮,说明下载excel文件,该按钮将与您的c#方法绑定。如果你在你的网站上使用这种方法,你可以做一次,并可能让它使用一个参数来确定它导出到excel的数据库表。

P.S。如果您正在寻找比gridview更多的功能,我建议您看一下我关于创建您自己的帖子的回答。 How to show pop up menu from database in gridview on each gridview row items?

您是否绝对需要将其复制到剪贴板?这可能是可能的,但需要大量编码。您正在谈论将数据粘贴到多个字段而不是一个字段中。我想你必须为excel创建一个扩展,知道剪贴板数据来自数据库表,并弄清楚如何填充工作表。