【问题标题】:Display rows from database filtered by year/month/week asp.net core mvc by input通过输入显示按年/月/周 asp.net core mvc 过滤的数据库中的行
【发布时间】:2020-11-13 11:38:11
【问题描述】:

我目前正在处理销售报告功能。我想通过输入年/月/周来生成销售报告。在我的 DAL 类中,您可以看到我编写了一个查询,显示了 2020 年的所有销售额。我在查询中对此进行了硬编码,但我想通过输入显示销售额。请看下面的图片以获得解释。用户必须通过输入月份和/或年份来选择显示。抱歉,英语不是我的母语。

This is an image of my Index view

这是我的 DAL,我目前硬编码 '01/01/2020' AND OrderDatum

public List<OrderModel> getByYear()
    {
        List<OrderModel> Orderlist = new List<OrderModel>();
        try
        {
            string sql = "SELECT * FROM [Order] WHERE OrderDatum >= '01/01/2020' AND OrderDatum < '01/01/2021';";

            DataSet results = ExecuteSql(sql, new List<KeyValuePair<string, string>>());

            for (int x = 0; x < results.Tables[0].Rows.Count; x++)
            {
                OrderModel c = DatasetParser.DataSetToSpeler(results, x);
                Orderlist.Add(c);
            }
            return Orderlist;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

这是我的订单模型

 public class OrderModel
{
    public int BestellingId { get; set; }
    public int KlantID { get;  set; }
    public DateTime Datum { get; set; }
    public double Totaalprijs { get; set; }
    public string Status { get; set; }
    public List<ProductModel> Producten { get; set; }

    public OrderModel(int bestellingId, int klantId, DateTime datum, double totaalPrijs, string status)
    {
        BestellingId = bestellingId;
        KlantID = klantId;
        Datum = datum;
        Totaalprijs = totaalPrijs;
        Status = status;
    }

    public OrderModel()
    {

    }
}

我在控制器中使用的唯一功能。

 public IActionResult Index()
    {
        List<OrderModel> orders = rapport.getByYear();
        return View(orders);
    }

我的索引视图

@model List<OrderModel>;

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
</div>

<div>
<table class="table" style="background-color:aliceblue;">
    <thead style="color: darkred;">
        <tr>
            <th>ID</th>
            <th>KlantId</th>
            <th>Datum</th>
            <th>Status</th>
            <th>TotaalPrijs</th>
        </tr>
    </thead>

    <tbody style="">
        @foreach (OrderModel order in Model) { 
            <tr>
                <td>@Html.DisplayFor(modelItem => order.BestellingId)</td>
                <td>@Html.DisplayFor(modelItem => order.KlantID)</td>
                <td>@Html.DisplayFor(modelItem => order.Datum)</td>
                <td>@Html.DisplayFor(modelItem => order.Status)</td>
                <td>@Html.DisplayFor(modelItem => order.Totaalprijs)</td>
            </tr>
        }
    </tbody>
</table>

【问题讨论】:

  • 将 startdate 和 enddate 从视图传递到控制器,并将字符串 sql 更改为 string sql = $"SELECT * FROM [Order] WHERE OrderDatum &gt;= {startdate} AND OrderDatum &lt; {enddate};";
  • 谢谢你我要去试试。

标签: javascript c# sql asp.net-mvc asp.net-core


【解决方案1】:

您可以将动态查询编写为

public static string GetQuery(DateTime startDate, DateTime endDate)
{
    string query = @"select * from table
                    where dateCol > '" + startDate + @"' and dateCol < '" + endDate + @"'";

    return query;
}

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2017-11-07
    • 2023-03-29
    • 1970-01-01
    • 2021-12-28
    • 2013-03-08
    • 2014-02-12
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多