Member 14683862 Ответов: 2

Как изменить выпадающий список


У меня есть выпадающий список дат.

когда страница загружается я заполняю список -

int endYear = DateTime.Now.Year + 1;
          for (int i = 1; i < 31; i++)
          {
              DDLday.Items.Add(i.ToString());
          }
          for (int i = 1; i < 13; i++)
          {
              DDLmonth.Items.Add(i.ToString());
          }
          for (int i = endYear; i > 1920; i--)
          {
              DDLYear.Items.Add(i.ToString());
          }


и поставьте дату из базы данных
DateTime bday = DateTime.Parse(currentUser.Date.ToString());
DDLday.SelectedValue = bday.Day.ToString();
DDLmonth.SelectedValue = bday.Month.ToString();
DDLYear.SelectedValue = bday.Year.ToString();



и когда я хочу отредактировать дату в данных -

Date = DateTime.Parse(DDLday.Text + "/" + DDLmonth.Text + "/" + DDLYear.Text),



но проблема в том, что я использую .selectedvalue текст не изменился, как я могу отредактировать дату?

Что я уже пробовал:

Я новичок и не знаю что делать

MadMyche

Давайте начнем с На каком языке вы работаете?

Member 14683862

с#

Maciej Los

С помощью ToString() метод избыточен!
Вы должны работать над правильными типами данных.
Представьте себе: "2019-12-10", "2019.12.10" и "2019/12/10" - это строковое представление дат соответственно в польской, немецкой и английской нотациях. Они равны (как дата), но ее строковое представление - нет!

2 Ответов

Рейтинг:
10

Member 14683862

я ввел код

if(!IsPostBack)


Рейтинг:
0

Maciej Los

Пожалуйста, сначала прочтите мой комментарий к этому вопросу!

Вот пример того, что я изложил в комментарии.

System.Globalization.CultureInfo[] cis = new System.Globalization.CultureInfo[]
	{
		new System.Globalization.CultureInfo("PL-pl"),
		new System.Globalization.CultureInfo("DE-de"),
		new System.Globalization.CultureInfo("EN-us")
	};
	
DateTime dt = DateTime.Today;
foreach(System.Globalization.CultureInfo ci in cis)
	Console.WriteLine(dt.ToString("d", ci));


Как вы можете видеть, я использую одну дату, но результат таков::
2019-12-10
10.12.2019
12/10/2019


Больше:
Стандартные строки формата даты и времени | Microsoft Docs[^]
Пользовательские строки формата даты и времени - .NET | Microsoft Docs[^]

Дополнительное примечание: не создавайте такую дату:
DateTime dt = DateTime.Parse(DDLday.Text + "/" + DDLmonth.Text + "/" + DDLYear.Text),

Вместо этого используйте его:
DateTime dt = new DateTime(DDLday.SelectedValue, DDLmonth.SelectedValue, DDLYear.SelectedValue),


Наконец, я бы предложил прочитать это: asp.net - SelectedValue против элемент.Значение DropDownList - переполнение стека[^]


Member 14683862

прежде всего спасибо вам,

но самый главный вопрос заключается в следующем -
как я могу поставить, когда страница загружается DDLday.SelectedValue = 14;
а после того, как пользователь изменит selctedvalue и отправит его, он изменится?

Maciej Los

Попробовать это:

//changing index
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(<value>));
//or
//DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText(<Text>));

//changing value
DropDownList1.Items.FindByText("<Text>").Selected = true ;
//or
//DropDownList1.Items.FindByValue("<value>").Selected = true ;

Member 14683862

спасибо...

Maciej Los

Всегда пожалуйста.