6

ASPカレンダーコントロールに翌年のボタンを動的に追加する必要があります。

既存のnextおよびprevコントロールのすぐ隣に追加するにはどうすればよいですか?デイレンダーイベントでこれを行うことは可能ですか?助けてください

4

2 に答える 2

3

以下を試してください...

<asp:Calendar ID="calender1" runat="server" VisibleDate="2012-10-10"></asp:Calendar>
<asp:Button ID="btnMNext" runat="server" Text="Next Month" />
<asp:Button ID="btnMPrev" runat="server" Text="Prev Month" />
<asp:Button ID="btnNextYr" runat="Server" Text="Next Year" />
<asp:Button ID="btnPrevYr" runat="server" Text="Prev Year" />
<br />
<asp:TextBox ID="txtcur" runat="server"></asp:TextBox>

コードビハインドで

**btnMNext_Click**
String month;
month = calender1.SelectMonthText();
txtcur.Text = calender1.SelectedDate.ToShortDateString();
calender1.VisibleDate = calender1.VisibleDate.AddMonths(1);

**btnPrevYr_Click**
    calender1.VisibleDate = calender1.VisibleDate.AddYears(-1);


**btnNextYr_Click**
    calender1.VisibleDate = calender1.VisibleDate.AddYears(1);
End Sub

**btnMPrev_Click**
    calender1.VisibleDate = calender1.VisibleDate.AddMonths(-1);
于 2013-01-17T13:30:06.223 に答える
2

いいえ、既存のカレンダーを簡単に変更することはできません。しかし、年を選択できるカレンダーの上にテーブル行を広告するだけで十分かもしれません。

<table>
    <tr>
        <td>
            <asp:DropDownList id="drpCalMonth" Runat="Server" OnSelectedIndexChanged="Set_Calendar" AutoPostBack="true"></asp:DropDownList>
            <asp:DropDownList id="drpCalYear" Runat="Server" OnSelectedIndexChanged="Set_Calendar" AutoPostBack="true"></asp:DropDownList>
        </td>
    </tr>
    <tr>
        <td>
            <asp:Calendar id="cntCalendar" Runat="Server" Width="100%" />
        </td>
    </tr>
</table>

年と月のドロップダウンリストを設定する 2 つの方法を次に示します。

protected void Populate_MonthList()
{
    //Add each month to the list
    var dtf = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
    for(int i=1; i<=12; i++)
        drpCalMonth.Items.Add(new ListItem(dtf.GetMonthName(i), i.ToString()));

    //Make the current month selected item in the list
    drpCalMonth.Items.FindByValue(DateTime.Now.Month.ToString()).Selected = true;
}


protected void Populate_YearList()
{
    //Year list can be changed by changing the lower and upper 
    //limits of the For statement    
    for (int intYear = DateTime.Now.Year - 20; intYear <= DateTime.Now.Year + 20; intYear++)
    {
        drpCalYear.Items.Add(intYear.ToString());
    }

    //Make the current year selected item in the list
    drpCalYear.Items.FindByValue(DateTime.Now.Year.ToString()).Selected = true;
}

以下からリストを初期化できますPage_Load

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Populate_MonthList();
        Populate_YearList();
    }
}

最後に、new を設定するSelectedIndexChanged両方のイベントのイベント ハンドラーを次に示します。DropDownListsDate

protected void Set_Calendar(object Sender, EventArgs e)
{
    int year = int.Parse(drpCalYear.SelectedValue);
    int month = int.Parse(drpCalMonth.SelectedValue);
    cntCalendar.TodaysDate = new DateTime(year, month, 1);
}

【テスト済み】

インスピレーション: http://www.4guysfromrolla.com/articles/090104-1.aspx (VB)

于 2013-01-17T13:46:10.740 に答える