2015-08-06 3 views
1

Каждый раз, когда срабатывает событие нажатия кнопки, метка (или любой другой элемент управления) на панели переписывается новой! Вот событие кнопки.Почему панель управления каждый раз перезаписывается?

protected void Button3_Click(object sender, EventArgs e) 
{ 
    Label lbl = new Label(); 
    lbl.ID = "name"; 
    lbl.Text = Profession.SelectedItem.ToString(); 
    Panel1.Controls.Add(lbl); 
} 

Он каждый раз удалить предыдущую ярлык и добавить новую метку с выбранным элементом в DropDownList

+0

http://stackoverflow.com/questions/12337701/i-want-to-add-dynamic-controls-to-panel-by-button-click-which-should-not -overrid – aravind

+0

@aravind: Я не развиваюсь в vb. – Jamil

+0

U может использовать конвертер кода онлайн, который будет конвертировать vb в C# .. логика может быть такой же. – aravind

ответ

1

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

protected void Button3_Click(object sender, EventArgs e) 
{ 
    Label lbl = new Label();//here on every click new label initialized 
    lbl.ID = "name"; 
    lbl.Text = Profession.SelectedItem.ToString(); 
    Panel1.Controls.Add(lbl); 
} 

Заменить вышеуказанный код на

Label lbl = new Label(); 
protected void Button3_Click(object sender, EventArgs e) 
{   
    lbl.ID = "name"; 
    lbl.Text = Profession.SelectedItem.ToString(); 
    if(!Panel1.Controls.Contains(lbl)) //Check here if label already added 
     Panel1.Controls.Add(lbl); 
} 
+0

Уже пробовал броу. Тот же результат! – Jamil

+0

Почему вы не добавляете ярлык в панель при запуске страницы? Просто измените текст метки на клик. –

+0

Я добавляю несколько ярлыков onclick. Не хотите добавлять, пока пользователь не нажмет кнопку. – Jamil

0

Посмотрите на сферу своей этикетки. Вы создаете новый экземпляр ярлыка при каждом нажатии. Возьмите это на уровне класса

Label lbl = new Label(); 
Смежные вопросы