0

listBox に DateTime を入力したいと思います。まず、ASP.NET でコードを作成しました。

<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 や日付を含む文字列ではなく、空の文字列が復元されます。(リストボックスは、ブラウザに表示される場合は問題ありません)

文字列である他の属性でも同じ原則を実行しましたが、問題ありませんでした。問題は実際には DateTime の使用です。

では、 listBox をクリックした後、どうすれば Date を回復できますか?

4

1 に答える 1

2

ではPage_Load、ListBox をデータバインドする前に、 がポストバックでないかどうかを確認する必要があります。そうしないと、ListBox入力する前に が再設定されListBoxDate_SelectedIndexChangedSelectedValue値が失われます。

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プロパティは文字列であることに注意してください。DateTime を取得するには、その値を解析する必要があります。そのために使用できますDateTime.Parse()

于 2013-03-06T15:32:08.083 に答える