列表框中的DateTime

本文关键字:DateTime 列表 | 更新日期: 2023-09-27 18:02:47

我想用DateTime填充一个listBox。首先,我用ASP编写代码。净

<table>
    <tr>
        <td>&nbsp;
            <asp:ListBox 
                ID="ListBoxDate" 
                runat="server" 
                AutoPostBack="True"
                OnSelectedIndexChanged="ListBoxDate_SelectedIndexChanged" >
            </asp:ListBox>
        </td>
    </tr>
</table>

这是c#中的方法

protected void Page_Load(object sender, EventArgs e)
{
    ListBoxDate.DataSource = GetAllDate(); /* it returns a list of objects Date (which is a class with an attribute DateTime) */
    ListBoxDate.DataTextField = "_Date";
    ListBoxDate.DataValueField = "_Date";
    ListBoxDate.DataBind();
}

当我点击事件时ListBoxDate_SelectedIndexChanged方法:

protected void ListBoxDate_SelectedIndexChanged(object sender, EventArgs e)
{
    Date date= new Date()
    {
        _Date = ListBoxDate.SelectedValue,
    };
}

当我点击日期时,我只是恢复一个空字符串,而不是DateTime或包含日期的字符串。(列表框在我的浏览器上显示时是OK的)

我对其他字符串属性做了同样的原则,这是可以的。问题在于DateTime的使用。

那么,如何在点击列表框后恢复日期呢?

列表框中的DateTime

Page_Load中,您必须在绑定ListBox之前检查是否不是回发。否则,ListBox会在输入ListBoxDate_SelectedIndexChanged之前被重新填充,SelectedValue的值会丢失:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack) 
    {
       ListBoxDate.DataSource = GetAllDate(); /* it returns a list of objects Date   (which is a class with an attribute DateTime) */
       ListBoxDate.DataTextField = "_Date";
       ListBoxDate.DataValueField = "_Date";
       ListBoxDate.DataBind();
    }
}

请记住,SelectedValue属性是一个String,您必须解析它的值以获得DateTime。可以使用DateTime.Parse()