c # использовать Calendar.SelectedDate в контроллере повторителя, но месяц дает мне «00» - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь создать веб-форму, используя asp.net. При нажатии связанной кнопки (внутри повторителя) должен появиться календарь. Предполагается, что дата, выбранная в календаре, заполняет текстовое поле «Дата начала».

Это один предмет внутри Repeater1:

<td>
      <asp:TextBox runat="server" ID="txtStart" Text='<%# DataBinder.Eval(Container.DataItem,"StartDate") %>' />
      <asp:LinkButton ID="btnCalendar" runat="server" 
      CssClass="btn btn-xs"OnClick="ShowCalendar">
      <span aria-hidden="true" class="glyphicon glyphicon-calendar"></span>
      </asp:LinkButton>
</td>

После всех других предметов, вот календарь:

 <asp:Calendar ID="Calendar1" runat="server" Visibile="false"  SelectionMode="Day" onselectionchanged="Calendar1_SelectionChanged">
                  </asp:Calendar>

Код позади:

protected void Calendar1_SelectionChanged(object sender, EventArgs e){
    if (Repeater1.Items.Count == 1)
    {
        TextBox txtStart = (TextBox)Repeater1.Items[0].FindControl("txtStart");
        DateTimeFormatInfo usDtfi = new CultureInfo("en-US", false).DateTimeFormat;

        txtStart.Text = Calendar1.SelectedDate.ToString("yyyymmdd");
    }

Этот код просто добавляет текст к первому элементу повторителя

Моя проблема:

Выбранная дата календаря дает мне правильные год и дату, но дает мне значение "00" для месяца

Это ссылка на скриншот части моей веб-формы, которая проблематична

Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

Просто измените строку

 txtStart.Text = Calendar1.SelectedDate.ToString("yyyymmdd");

с

 txtStart.Text = Calendar1.SelectedDate.ToString("yyyyMMdd");
...