3个dropdownlist控件 如何从数据库中读取datetime列并且正确分别绑定年月日
RT
在网上找了个 3个dropdownlist控件绑定年月日的 代码,能够正确实现年月日的显示。核心代码:
public void ddlBindYMD()
{
DateTime tnow = DateTime.Now;//现在时间
ArrayList AlYear = new ArrayList();
ArrayList AlMonth = new ArrayList();
for (int i = tnow.Year; i >=2000; i--) AlYear.Add(i);
for (int i = 1; i <= 12; i++) AlMonth.Add(i);
//绑定年
ddl_y.DataSource = AlYear;
ddl_y.DataBind();
ddl_y.SelectedValue = tnow.Year.ToString();
//绑定月
ddl_m.DataSource = AlMonth;
ddl_m.DataBind();
ddl_m.SelectedValue = tnow.Month.ToString();
int year=-1;
int month=-1;
year = Int32.Parse(ddl_y.SelectedValue);
month = Int32.Parse(ddl_m.SelectedValue);
//ddl_d.SelectedValue = tnow.Day.ToString();
BindDays(year, month); //根据年月 绑定 日期
}
//这是我从数据库中 分别读取出来的 年 月 日
string year =Convert.ToString((DateTime)model.ReleaseDate).Year)) ;
string month=Convert.ToString((DateTime)model.ReleaseDate).Month)) ;
string day =Convert.ToString((DateTime)model.ReleaseDate).Day)) ;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>简单的数据列表举例</title>
<script src="Js/jquery-1.4.2.min.js" type="text/javascript"></script>
<style type="text/css">
input, textarea {width: 100px;border-top: solid 1px #999;border-right: solid 1px #CCC;border-left: solid 1px #CCC;
border-bottom: solid 1px #EEE;padding: 5px 8px;border-radius: 2px;line-height: 12px;color: #999;vertical-align: middle;}
select {border-top: solid 1px #999;border-right: solid 1px #CCC;border-left: solid 1px #CCC;border-bottom: solid 1px #EEE;
padding: 5px 8px;border-radius: 2px;color: #999;vertical-align: middle;}
.button{width: 67px; height: 30px; border: 0 none; background-color: #FFAE00; font-weight: bold; color: white;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<p><asp:TextBox runat="server" ID="txty" style="width:60px;" Text="2008" />
<asp:TextBox runat="server" ID="txtm" style="width:60px;" Text="8" />
<asp:TextBox runat="server" ID="txtd" style="width:60px;" Text="8" />
<asp:Button runat="server" ID="btnTest" CssClass="button" Text="测试" onclick="btnTest_Click" /></p>
<p>
<asp:DropDownList runat="server" ID="ddl_y" Width="118" AutoPostBack="true"
onselectedindexchanged="ddl_y_SelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList runat="server" ID="ddl_m" Width="118" AutoPostBack="true"
onselectedindexchanged="ddl_m_SelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList runat="server" ID="ddl_d" Width="118"></asp:DropDownList>
</p>
</div>
</form>
<script type="text/javascript">
</script>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlBindY();
ddlBindM();
BindDays(Int32.Parse(ddl_y.SelectedValue), Int32.Parse(ddl_m.SelectedValue));
}
}
public DateTime tnow = DateTime.Now;//现在时间
public void ddlBindY()
{
ArrayList AlYear = new ArrayList();
for (int i = tnow.Year; i >= 2000; i--) AlYear.Add(i);
//绑定年
ddl_y.DataSource = AlYear;
ddl_y.DataBind();
ddl_y.SelectedValue = tnow.Year.ToString();
}
public void ddlBindM()
{
ArrayList AlMonth = new ArrayList();
for (int i = 1; i <= 12; i++) AlMonth.Add(i);
//绑定月
ddl_m.DataSource = AlMonth;
ddl_m.DataBind();
ddl_m.SelectedValue = tnow.Month.ToString();
}
private void BindDays(int year, int month)
{
int days = DateTime.DaysInMonth(year, month);
ArrayList ardate = new ArrayList();
for (int i = 1; i <= days; i++) ardate.Add(i);
ddl_d.DataSource = ardate;
ddl_d.DataBind();
}
protected void ddl_y_SelectedIndexChanged(object sender, EventArgs e)
{
BindDays(Int32.Parse(ddl_y.SelectedValue), Int32.Parse(ddl_m.SelectedValue));
}
protected void ddl_m_SelectedIndexChanged(object sender, EventArgs e)
{
BindDays(Int32.Parse(ddl_y.SelectedValue), Int32.Parse(ddl_m.SelectedValue));
}
//绑定
protected void btnTest_Click(object sender, EventArgs e)
{
ddl_y.SelectedValue = this.txty.Text;
ddl_m.SelectedValue = this.txtm.Text;
BindDays(Int32.Parse(ddl_y.SelectedValue), Int32.Parse(ddl_m.SelectedValue));
ddl_d.SelectedValue = this.txtm.Text;
}
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Controls_DatePicker" Codebehind="DatePicker.ascx.cs" %>
<asp:DropDownList runat="server" ID="dwYear"></asp:DropDownList>
<asp:DropDownList runat="server" ID="dwMonth"></asp:DropDownList>
<asp:DropDownList runat="server" ID="dwDay" ></asp:DropDownList>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Controls_DatePicker : System.Web.UI.UserControl
{
private string _Year, _Month, _Day,_text;
private int _MinYear, _MaxYear;
private string _style = "ymd"; //控件显示样式
private int MAXYEAR = 1; //默认年份
private int MINYEAR = - 5;
#region 设置或返回此控件的值
/// <summary>
/// 设置或返回此控件的值
/// </summary>
public string Text
{
get
{
string temp = "";
if (dwDay.Visible)
{ temp= this.dwYear.Text + "-" + this.dwMonth.Text + "-" + this.dwDay.Text; }
else
{
if (dwMonth.Visible)
{
temp= this.dwYear.Text + "-" + this.dwMonth.Text + "-01";
}
else
{
temp= dwYear.Text + "-01-01";
}
}
return temp;
//if (Galsun.InputCheck.IsTrueDate(temp))
//{
// return temp;
//}
//else
//{
// Response.Write("<script>alert('不是有效的日期!');</script>");
// return "2007-1-1";
//}
}
set
{
_text = value;
setText(value);
}
}
private void setText(string value)
{
string date = DateTime.Parse(value).ToString("yyyy-MM-dd");
_Year = date.Substring(0, 4);
_Month = date.Substring(5, 2);
_Day = date.Substring(8, 2);
this.dwYear.Text = _Year;
this.dwMonth.Text = _Month;
this.dwDay.Text = _Day;
}
#endregion
#region 返回年份
/// <summary>
/// 返回年份
/// </summary>
public string Year
{
get
{
return dwYear.Text;
}
set
{
dwYear.Text = value;
}
}
#endregion
#region 设置控件显示样式
/// <summary>
/// 设置控件显示样式,如ym ,则只显示年月
/// </summary>
public string ShowStyle
{
set
{
_style = value;
}
}
#endregion
#region 最小年份
/// <summary>
/// 最小年份,默认为1990年
/// </summary>
public int MinYear
{
set
{
_MinYear = value;
}
}
#endregion
#region 最大年份
/// <summary>
/// 最大年份,默义为2015年
/// </summary>
public int MaxYear
{
set
{
_MaxYear = value;
}
}
#endregion
#region 加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//设置显示年份
int maxYear, minYear;
//maxYear = _MaxYear == 0 ? MAXYEAR : _MaxYear;
//minYear = _MinYear == 0 ? MINYEAR : _MinYear;
maxYear = DateTime.Now.AddYears(_MaxYear == 0 ? MAXYEAR : _MaxYear).Year;
minYear = DateTime.Now.AddYears(_MinYear == 0 ? MINYEAR : _MinYear).Year;
if (!IsPostBack)
{
for (int i = minYear; i <= maxYear; i++)
{
dwYear.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
//显示月
for (int i = 1; i <= 12; i++)
{
string month = i.ToString().Length == 1 ? "0" + i.ToString() : i.ToString();
dwMonth.Items.Add(new ListItem(month, month));
}
//显示月
for (int i = 1; i <= 31; i++)
{
string day = i.ToString().Length == 1 ? "0" + i.ToString() : i.ToString();
dwDay.Items.Add(new ListItem(day, day));
}
//显示格式
if (_style.IndexOf('y') != -1)
dwYear.Visible = true;
else
dwYear.Visible = false;
if (_style.IndexOf('m') != -1)
dwMonth.Visible = true;
else
dwMonth.Visible = false;
if (_style.IndexOf('d') != -1)
dwDay.Visible = true;
else
dwDay.Visible = false;
if (_text == null)
{
_text = DateTime.Now.Date.ToString();
}
setText(_text);
}
}
#endregion
}
