C # .Net: дублирование значений в моем DropDownlist - PullRequest
0 голосов
/ 23 марта 2011

У меня есть раскрывающийся список ddlTables, который содержит имена таблиц в моей базе данных, и я отображаю содержимое таблицы в сетке на основе выбранной таблицы.

Я заполняю данные в своем раскрывающемся списке на Page_Load событие, используя следующий код:

ddlTables.Items.Add("-SELECT-");
String getTables = "SELECT TABLE_NAME FROM Information_Schema.Tables where Table_Type = 'BASE TABLE'";
MySqlConnection objMyCon10 = new MySqlConnection(strProvider);
objMyCon10.Open();
MySqlCommand cmd10 = new MySqlCommand(getTables, objMyCon10);
MySqlDataReader r = cmd10.ExecuteReader();
while (r.Read())
{
    ddlTables.Items.Add(r[0].ToString());
}
objMyCon10.Close(); 

Когда я нажимаю кнопку Go, она должна отображать содержимое таблицы выбранной таблицы.

Но при нажатии кнопки Go язаметил, что сначала он вызывает событие Page_Load, а затем вызывает btnGo_Click.

, поэтому он дублирует все значения в моем раскрывающемся списке.

В конце концов появляется каждое имя таблицы в моем раскрывающемся спискедважды после нажатия кнопки Go.

Как удалить это дублирование значений?

Ответы [ 4 ]

2 голосов
/ 23 марта 2011

Попробуйте поместить этот код в

if(!Page.IsPostBack)
{
    //your code
}

блок

1 голос
/ 30 июля 2014

Пример программы

if(!IsPostBack) 
{ 
    //Creating Items 
    ListItem li1 = new ListItem("Male", "1"); 
    ListItem li2 = new ListItem("Female", "2"); 
    ListItem li3 = new ListItem("Secret", "3"); 
    //Adding Items to DropDownList 
    DropDownList1.Items.Add(li1); 
    DropDownList1.Items.Add(li2); 
    DropDownList1.Items.Add(li3); 
}
1 голос
/ 23 марта 2011

Поместите свой код для заполнения пунктов раскрывающегося списка в условную проверку

if(!Page.IsPostback)
{[dropdown filling/binding code here]}

, это позволит избежать повторного заполнения значений при нажатии кнопки, а также сохранит выбор, если таковой имеется.сделанные вами в выпадающем списке

0 голосов
/ 23 марта 2011

2 варианта:

Если вам нужно, чтобы элементы были согласованными только с того момента, когда вы впервые зашли на страницу, используйте:

if(!Page.IsPostback) { /* bind here */ };

Если вам нужно, чтобы значения были активнымина самом обновлении страницы, затем отключите состояние представления на элементе управления, и никакие предыдущие значения не будут повторно применены к выпадающему списку при обратной передаче.

...