我有一个第三方日历控件,名为Day Pilot Calendar,它有一个EventClickHandling事件,当我点击日历中的某个事件时,它会进行回发。当我点击一个事件时,我想在列表视图中显示有关该事件的详细信息。事件的详细信息(ID,名称,开始/结束日期)存储在数据库表中。对于每个活动,有一个或两个学校科目(如数学考试,英语考试),存储在另一个表格中。我想要实现的是,当我点击一个事件时,我得到了EventID并希望将它传递给ListView,在那里我可以与Subjects表中的SubjectID进行比较,以获得关于主题的每个细节。我的问题是,我不知道如何将一个值从EventClick方法传递给listview SelectMethod,或者甚至是否可能。
我已设法通过下拉列表以这种方式执行此操作:
public IQueryable<Subject> GetEventDetails([Control] int ddlEvents)
{
var _db = new School.Models.SchoolContext();
IQueryable<Subject> query = _db.Subjects;
query = query.Where(p => p.SubjectID == ddlEvents);
return query;
}
是否可以使用click事件中的值来执行此类操作?
编辑:我被要求清除一些内容并添加更多详细信息:
我有Event类:
public int EventID { get; set; }
public string EventName { get; set; }
public string StartDate { get; set; }
public string EndDate { get; set; }
public string Notes { get; set; }
public int Subject Subject {get; set;}
我有主题类:
public int SubjectID { get; set; }
public string SubjectName { get; set; }
public string SubjectRoom { get; set; }
public ICollection<Event> Events { get; set; }
这就是DayPilotCalendar EventClick方法在没有任何特定代码的情况下的样子:
protected void DayPilotCalendar1_EventClick(object sender, DayPilot.Web.Ui.Events.EventClickEventArgs e)
{
<code here>
}
这是我想象的,但这是完全错误的,可能是愚蠢的:
public IQueryable<Subject> GetEventDetails([Control] int ValueFromClickEvent)
{
var _db = new School.Models.SchoolContext();
IQueryable<Subjects> query = _db.Subjects;
query = query.Where(p => p.SubjectID == ValueFromClickEvent);
return query;
}
日历的实施:
<DayPilot:DayPilotCalendar ID="DayPilotCalendar1" runat="server" SelectMethod="GetEvents" DataEndField="EndDate" DataStartField="StartDate" DataTextField="EventName" DataValueField="EventID" Days="7" TimeFormat="Clock24Hours" EventClickHandling="PostBack" OnEventClick="DayPilotCalendar1_EventClick" StartDate="2018-05-30" />
填充日历:
public IQueryable<Event> GetEvents()
{
var _db = new School.Models.SchoolContext();
IQueryable<Event> query = _db.Events;
return query;
}