将过滤后的webgrid导出到Excel-Webmatrix

将过滤后的webgrid导出到Excel-Webmatrix,excel,razor,webmatrix,Excel,Razor,Webmatrix,我正在尝试将过滤后的webgrid导出到excel,但是当下载该文件时,它提供了数据库中的所有记录,然后将我的代码更改为此 此代码是我创建过滤器的页面: var db = Database.Open("formIGF"); var query = "SELECT * FROM exportTable WHERE dataEncomenda LIKE @0 "; var dataPedido = "%" + Request["dataPedido"] + "%"; var data = db.Q

我正在尝试将过滤后的webgrid导出到excel,但是当下载该文件时,它提供了数据库中的所有记录,然后将我的代码更改为此

此代码是我创建过滤器的页面:

var db = Database.Open("formIGF");
var query = "SELECT * FROM exportTable  WHERE dataEncomenda LIKE @0 ";
var dataPedido = "%" + Request["dataPedido"] + "%";
var data = db.Query(query, dataPedido);
var columns = new[]{"dataEncomenda"};
var grid = new WebGrid(data, columnNames: columns, rowsPerPage:10);


<form method="post">
<div class="grid">

    <div id="grid">
        <label for="dataRecolha">Data do Pedido</label><input id="dataPedido" name="dataPedido" type="text" value="" placeholder="Selecionar um dia"/>
        <input type="submit" />


            @grid.GetHtml(    
                caption: "Numero Total de Entradas: " + @grid.TotalRowCount + " ",
                tableStyle : "table",
                alternatingRowStyle : "alternate",
                headerStyle : "header",
                columns: grid.Columns(
                                        grid.Column("ID"),
                                        grid.Column("dataEncomenda", "Data da Encomenda")
                )
            )

        <a href="GenerateExcel.cshtml?cond=@Request["dataPedido"]" target="_blank">Exportar para Excel</a>

    </div>
  </div>
</form>

该值不应传递给我的查询字符串?

您正在引用一个不存在的查询字符串值。您已将其命名为
cond
,但正在使用
Request.QueryString[“dataPedido”]
获取值。那应该是

var dataPedido = Request.QueryString["cond"];
不仅如此,还可以将该值作为SQL命令传递给
Database.Query
方法。它不是有效的sql命令。您在更改中遗漏了这一点:

var query = "SELECT * FROM exportTable  WHERE dataEncomenda LIKE @0 ";
var dataPedido = "%" + Request.QueryString["cond"] + "%";
var data = db.Query(query, dataPedido);

好的,我改变了这一点,并给了我另一个错误:“04”附近的语法不正确。这与我试图传递的价值有关。值为04-06-2014再次感谢Mike。工作得很好。迈克,很抱歉再次打扰你,但我有点麻烦。我在想,如果用户想要日期范围内的记录怎么办。我已经在我的webgrid页面上试过了。var dataPedido=“%”请求[“dataPedido”]+“%”;var dataFim=“%”请求[“dataFim”]+“%”;var query=“从exportTable中选择*,其中dataEncomenda介于“+dataPedido+”和“+dataFim+””;收集数据,但我的webgrid显示为空。你能给我一些灯吗?Sorry数据库中的数据类型是什么?不适用于日期,但您可以使用
,例如
“从导出表中选择*,其中dataEncomenda>=@0和dataPedido
var dataPedido = Request.QueryString["cond"];
var query = "SELECT * FROM exportTable  WHERE dataEncomenda LIKE @0 ";
var dataPedido = "%" + Request.QueryString["cond"] + "%";
var data = db.Query(query, dataPedido);