GridView 需要更多代码来支持日历控件。





4.00/5 (6投票s)
2007 年 11 月 28 日

27548

358
GridView 需要更多代码来支持日历控件。
GridView 需要更多代码来支持日历控件。
引言
我需要创建一个任务管理器应用程序来管理团队中程序员分配的任务,并使用日历控件提供每个创建任务的开始日期和结束日期。 我能够为 SelectedDate 提供双向绑定,并且也能像 MSDN 文档中记录的那样保留 VisibleDate,但在编辑期间,我无法保留 GridView 中的 SelectedDate。
背景
虽然我已将 EnableViewState 设置为 True,但我必须将 StartDate 和 EndDate 存储在 ViewState 集合中,作为 ViewState ["StartDate"] 和 ViewState ["EndDate"],并在页面刷新期间将它们分配给 SelectedDate。 执行此操作的代码很简单,如下所示。
Using the Code
<code>
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["StartDate"] != null)
{
((Calendar)grdTaskManager.Rows[grdTaskManager.EditIndex].Cells[5].Controls[1]).SelectedDate = (DateTime)ViewState["StartDate"];
}
if (ViewState["EndDate"] != null)
{
((Calendar)grdTaskManager.Rows[grdTaskManager.EditIndex].Cells[6].Controls[1]).SelectedDate = (DateTime)ViewState["EndDate"];
}
}
</code>
<code>
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
ViewState["StartDate"] = ((Calendar)grdTaskManager.Rows[grdTaskManager.EditIndex].Cells[5].Controls[1]).SelectedDate;
}
</code>
<code>
protected void Calendar2_SelectionChanged(object sender, EventArgs e)
{
ViewState["EndDate"] = ((Calendar)grdTaskManager.Rows[grdTaskManager.EditIndex].Cells[6].Controls[1]).SelectedDate;
}
</code>
<code>
protected void odsTaskManager_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
if (ViewState["StartDate"] != null)
{
e.Command.Parameters["@StartDate"].Value = ((DateTime)ViewState["StartDate"]).ToString();
ViewState.Remove("StartDate");
}
if (ViewState["EndDate"] != null)
{
e.Command.Parameters["@EndDate"].Value = ((DateTime)ViewState["EndDate"]).ToString();
ViewState.Remove("EndDate");
}
if (txtTaskDescription.Text.Length >