【发布时间】: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