【问题标题】:Search between 2 dates and update a GridView with ObjectDataSource在 2 个日期之间搜索并使用 ObjectDataSource 更新 GridView
【发布时间】:2013-12-04 19:00:56
【问题描述】:

我正在编写一个 ASP.NET 应用程序,该应用程序具有一个 GridView,该 GridView 使用 ObjectDataSource 来填充对象列表中的数据,该对象列表由 REST 调用填充。我还需要能够使用“搜索”按钮在两个日期之间进行搜索,这需要我对另一个 URL 进行 REST 调用。数据具有相同的结构,只是设置在 2 个日期之间。

这是我用来设置 DataGrid 的代码,这是 SorRepository 类。方法 Select() 被用作我的 ObjectDataSource 的选择代码:

namespace SorDowntimeWebApp.Models
{
    public class SorRepository
    {
        public List<SorEvent> Select()
        {
            // this URL gets the last 30 days of information
            string url = new WebClient().DownloadString(@"http://osw-hml3mes.novelis.biz:3020/Preheat/Downtime/History/30");
            List<SorEvent> events = JsonConvert.DeserializeObject<List<SorEvent>>(url);
            events = events.OrderByDescending(e => e.StartTime).ToList();
            return events;
        }
    }
}

这是上述方法使用的 SorEvent 类:

public class SorEvent
{
    public long Id { get; set; }
    public string Furnace { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime? EndTime { get; set; }
    public string MachineCode { get; set; }
    public string ReasonCode { get; set; }
    public string SubsystemCode { get; set; }
    public string ForceScheduleFlag { get; set; }
    public string OperatorComments { get; set; }
}

那部分工作正常。我只需要能够在用户选择 2 个日期后更新 GridView。

这是迄今为止我在按钮点击上尝试过的代码,按钮 ID 是 btnSearch:

protected void btnSearch_Click(object sender, EventArgs e)
{
    string startDate = txtStartDate.Text;
    string endDate = txtEndDate.Text;
    // this url gets the data from a specified range
    string url = @"http://osw-hml3mes.novelis.biz:3020/Preheat/Downtime/HistoryByDate?startDate=" +
                 startDate + "&endDate=" + endDate;
    List<SorEvent> events = JsonConvert.DeserializeObject<List<SorEvent>>(new WebClient().DownloadString(url));
    GridView1.DataSource = events;
    GridView1.DataBind();
}

txtStartDate 和 txtEndDate 都是使用 Jquery UI 日期选择器的文本框。

我尝试在我的 SorRepository 类中使​​用更新函数,但没有奏效。

另外,请注意,当我执行此搜索并调用 url 时,它将使用与 Select() 方法相同的 SorEvent 类。数据网格将具有相同的列。

【问题讨论】:

  • 你可以在调试时触发 btnSearch 并用断点捕获它吗?
  • @AndrewPaes:我收到“DataSource 和 DataSourceID 都在 'GridView1' 上定义。删除一个定义。”当我单击按钮时。这是因为我将 ObjectDataSource 定义为 DataSourceID,并且我试图将事件列表定义为 DataSource
  • 您能试试这些解决方案之一吗? codeproject.com/Questions/255064/…
  • 我正在尝试删除 DataSourceId 并改用 DataSource。该链接上的某个人建议这样做。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# asp.net gridview objectdatasource


【解决方案1】:

这是我想出的解决方案。我需要从 DataSourceId 中删除 ObjectDataSource 并在 Page_Load 方法中为 GridView 设置数据。这是我的代码:

public partial class SORGrid : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string url = @"http://osw-hml3mes.novelis.biz:3020/Preheat/Downtime/History/30";
        List<SorEvent> events = JsonConvert.DeserializeObject<List<SorEvent>>(new WebClient().DownloadString(url));
        events = events.OrderByDescending(ev => ev.StartTime).ToList();
        if (!IsPostBack)
        {
            GridView1.DataSource = events;
            GridView1.DataBind();
        }
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        // get dates and call the url with those 2 dates (POST call)
        string startDate = txtStartDate.Text;
        string endDate = txtEndDate.Text;
        string url = @"http://osw-hml3mes.novelis.biz:3020/Preheat/Downtime/History/30";
        if(startDate != "" || endDate != "")
            url = @"http://osw-hml3mes.novelis.biz:3020/Preheat/Downtime/HistoryByDate?startDate=" +
                     startDate + "&endDate=" + endDate;
        List<SorEvent> events = JsonConvert.DeserializeObject<List<SorEvent>>(new WebClient().DownloadString(url));
        events = events.OrderByDescending(ev => ev.StartTime).ToList();
        if (IsPostBack)
        {
            GridView1.DataSource = events;
            GridView1.DataBind();
        }

    }
}

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多