问题列表 - 第21485页

从静态方法调用Response.TransmitFile()

我有许多页面需要支持将数据导出到Excel电子表格.我可以很好地生成Excel文件,但我正在尝试弄清楚如何抽象这种行为,以便它可以从我需要的所有页面轻松地重用.我目前的想法是使用静态实用方法,如下所示:

public static void SendExcelFile(System.Web.UI.Page callingPage, string downloadFileName, List<List<string>> data, string worksheetTitle)
{
    string tempFileName = Path.GetTempFileName();

    try
    {
        // Generate file using ExcelPackage
        GenerateExcelDoc(tempFileName, data, worksheetTitle);

        callingPage.Response.AddHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
        callingPage.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        callingPage.Response.AddHeader("Content-Length", new FileInfo(tempFileName).Length.ToString());
        callingPage.Response.TransmitFile(tempFileName);
    }
    finally
    {
        //When this is removed, the method works as expected.
        if (File.Exists(tempFileName))
            File.Delete(tempFileName);  
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在调用的单击处理程序SendExcelFile如下所示:

protected void lnkExport_Click(object sender, EventArgs e)
{
    List<List<string>> dataList = GatherDataForSpreadsheet();
    Utility.SendExcelFile(this, "fileNameForDownload.xlsx", dataList, "MyReports");
}
Run Code Online (Sandbox Code Playgroud)

这段代码可以很好地作为调用页面的实例方法.但是,作为静态方法,它根本不起作用.当我单击调用此按钮时,浏览器会无限期地显示加载动画,但从不提示文件下载.

我对ASP.NET(以及一般的Web编程)很新,所以我确定我在这里遗漏了一些东西.有人可以解释一下我所看到的行为,并建议一种合理的替代方法吗?

编辑:如果我最后删除对File.Delete()的调用,该方法按预期工作.Response.TransmitFile()是否异步进行传输?

编辑2:我只需要在删除文件之前调用Response.Flush().请参阅下面的答案.谢谢!

c# asp.net response

3
推荐指数
1
解决办法
6877
查看次数

R是否适用于家庭而不是语法糖?

......关于执行时间和/或记忆.

如果不是这样,请使用代码段进行证明.请注意,矢量化的加速不计算在内.增速必须来自apply(tapply,sapply,...)本身.

r apply

146
推荐指数
5
解决办法
2万
查看次数

发光的WPF按钮

单击我们应用程序中的WPF按钮后,它们会发蓝光,返回原始颜色,返回蓝色等.这似乎是Windows Vista/7上的默认行为.它不会发生在XP上.有什么建议?

wpf styles button glow

7
推荐指数
1
解决办法
9561
查看次数

使用Visual Studio 6将Boost从Linux移动到Windows

2年前,我在Linux上用Boost做了一个小程序.现在我想让它在Windows中运行.我发现我的libs文件夹中有几个.a文件.我想知道如何让它在Windows中运行?我是否需要在Windows中构建Boost以获取库或我可以在某处下载?我正在使用Visual Studio 6.

c++ boost visual-studio

4
推荐指数
1
解决办法
453
查看次数

在进程之间进行通信时,队列优于管道的优势是什么?

管道上使用2个队列在进程之间进行通信的优点(如果有的话)是什么?

我打算使用multiprocessingpython模块.

python linux queue pipe multiprocessing

9
推荐指数
1
解决办法
3287
查看次数

如何在MouseOver上更改wx.Panel背景颜色?

这段代码:

import wx

app = None

class Plugin(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        wx.Panel.__init__(self, parent, *args, **kwargs)
        self.SetBackgroundColour((11, 11, 11))
        self.name = "plugin"

        self.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver)
        self.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave)

        wx.EVT_ENTER_WINDOW(self, self.onMouseOver)
        wx.EVT_LEAVE_WINDOW(self, self.onMouseLeave)

    def onMouseOver(self, event):
        self.SetBackgroundColor((179, 179, 179))
        self.Refresh()

    def onMouseLeave(self, event):
        self.SetBackgroundColor((11, 11, 11))
        self.Refresh()

    def OnClose(self, event):
        self.Close()
        app.Destroy()

    def name():
        print self.name


app = wx.App()
frame = wx.Frame(None, -1, size=(480, 380))
Plugin(frame)
frame.Show(True)
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

给我错误:

Traceback (most recent call last):
  File "C:\.... ... ....\plugin.py", line 18, in onMouseOver …
Run Code Online (Sandbox Code Playgroud)

python wxwidgets wxpython panel

5
推荐指数
1
解决办法
1万
查看次数

如何在直方图bin中获取数据

我想得到一个直方图箱中包含的数据列表.我正在使用numpy和Matplotlib.我知道如何遍历数据并检查bin边缘.但是,我想对2D直方图这样做,而执行此操作的代码相当丑陋.numpy有没有任何结构可以让这更容易?

对于1D情况,我可以使用searchsorted().但逻辑并没有那么好,我真的不想在没有必要时对每个数据点进行二进制搜索.

大多数令人讨厌的逻辑是由于bin边界区域.所有区域都有这样的边界:[左边缘,右边缘].除了最后一个bin,它有一个像这样的区域:[left edge,right edge].

以下是1D案例的示例代码:

import numpy as np

data = [0, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5, 3]

hist, edges = np.histogram(data, bins=3)

print 'data =', data
print 'histogram =', hist
print 'edges =', edges

getbin = 2  #0, 1, or 2

print '---'
print 'alg 1:'

#for i in range(len(data)):
for d in data:
    if d >= edges[getbin]:
        if (getbin == len(edges)-2) or d < edges[getbin+1]:
            print 'found:', d
        #end if
    #end if
#end for

print …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib histogram

18
推荐指数
2
解决办法
3万
查看次数

T-SQL插入或更新

我有一个关于SQL Server性能的问题.

假设我有一个表persons有以下栏目:id,name,surname.

现在,我想在此表中插入一个新行.规则如下:

  1. 如果id表中没有,则插入行.

  2. 如果id存在,则更新.

我这里有两个解决方案:

第一:

update persons
  set id=@p_id, name=@p_name, surname=@p_surname
where id=@p_id
if @@ROWCOUNT = 0 
  insert into persons(id, name, surname)
  values (@p_id, @p_name, @p_surname)
Run Code Online (Sandbox Code Playgroud)

第二:

if exists (select id from persons where id = @p_id)
  update persons
    set id=@p_id, name=@p_name, surname=@p_surname
  where id=@p_id
else
  insert into persons(id, name, surname)
  values (@p_id, @p_name, @p_surname)
Run Code Online (Sandbox Code Playgroud)

什么是更好的方法?看起来在第二个选择中,要更新一行,它必须被搜索两次,而在第一个选项中 - 只需一次.这个问题还有其他解决方案吗?我正在使用MS SQL 2000.

t-sql sql-server insert-update

33
推荐指数
4
解决办法
3万
查看次数

在编译之前替换Android的Launcher App

我想拥有自己的Android启动应用程序

换句话说,我希望自己的应用程序在启动后直接运行,而不是Launcher应用程序,因为我没有在手机上运行Android,而且我不想要Android的Home GUI

我还想在编译前更改源代码中的应用程序

我试图用我的HelloWorld应用程序简单地替换"/ packages/apps/Launcher"下的文件然后运行这个命令"mmm packages/apps/Launcher"但是它不起作用

所以任何涵盖这一点的书/教程/建议?提前致谢

android

5
推荐指数
1
解决办法
2989
查看次数

HTML文件上传字段样式

我正在尝试创建一个具有一点风格的文件上传字段,但我似乎在查找此示例时遇到问题.我知道部分原因是该字段本身因浏览器而异.

任何想法如何做到这一点?或者有没有办法在不使用可以设置样式的表单的文件元素的情况下执行此操作?

html upload coding-style file

5
推荐指数
1
解决办法
8866
查看次数