0

次の日付ドロップダウンリスト オプションがあります。

<asp:DropDownList id="eventsDate" runat="server">
   <asp:ListItem Value="04/31/2012">Apr 31, 2012</asp:ListItem>
   <asp:ListItem Value="05/21/2012">May 21, 2012</asp:ListItem>
   <asp:ListItem Value="07/22/2012">Jul 22, 2012</asp:ListItem>
   <asp:ListItem Value="10/16/2012">Oct 16, 2012</asp:ListItem>
   <asp:ListItem Value="11/12/2012">Nov 12, 2012</asp:ListItem>
   <asp:ListItem Value="12/18/2012">Dec 18, 2012</asp:ListItem>
</asp:DropDownList>

ドロップダウンのいずれかの日付が今日の日付より前の場合は、非表示にします。

たとえば、今日は 2012 年 4 月 26 日です。ドロップダウン リストの最初の日付が 2012 年 4 月 25 日であるとすると、ドロップダウン リストには表示されません。

空白を描いています。

4

2 に答える 2

1

最善の策であるデータソースからフィルタリングできる場合は、次のような方法を試してください。

eventsDate.Items.Cast<ListItem>().Select(
    i => i.Attributes["display"] = DateTime.Parse(i.Value) >= DateTime.Today ? "block" : "none");
于 2012-04-26T20:37:57.397 に答える
1

データソース自体で停止する必要があります-事前バインディング用のイベントメソッドがないため(リピーターのように-ItemCreatedイベント)...

したがって、dataTable にすべての値がある場合は、次のようにフィルタリングする必要があります。

var myNewData = (from  a in dt.AsEnumerAble() where DateTime.Parse(a["time"])<DateTime.Now.Date.AddDays(1) select a).CopyToDataTable()

編集

DropDownlist コントロールには、次のように通知するメソッドがありません。

あなたはDropDownlistにこの機能を持っていません。

唯一のオプション(私が見る)は、結果を取得したときにそれをフィルタリングすることです。

データテーブルでそれを取得すると仮定すると、関連するアイテムのみを保持する新しいデータテーブルを作成する必要があります。

私が書いたコードはLinq2XMLです。

追加するだけです:

system.linq の使用;

于 2012-04-26T19:49:56.723 に答える