Деструктор для DropDownList
Заполнил его вот так:
ddlCompanyProduct.Items.Add("myText")
ddlCompanyProduct.Items(0).Value = "AllCompany"
ddlCompanyProduct.Items(0).Selected = True
На каком то этапе нужно заполнить его заново, то есть предварительно стерев всю инфу которую занес до этого.
Вопрос как это можно сделать?
Нужно что-то вроде деструктора для DropDownList
Инструменты: VB.NET FrameWork 2.xxxxxxxx
Есть такая вещь?
Такое простое решение, как я сам не дошел? Вот что делает .NET с людьми! Спасибо огромное.
Написал, достаточно сложный поиск.
Но при тестировки его выяснилось, что все таки желательно не отключать ViewState а именно "стирать" все данные которые были занесенны ранее...
В связи с чем снова тот же вопрос:
Как можно "стереть" те айтомы(items) которые занес ранее?
Как можно "стереть" те айтомы(items) которые занес ранее?
this.Load + this.Page.IsPostBack
CodeComplete отказался аботать? ;)
По поводу заполнения списка - я бы использовал технику привязки данных через ObjectSource, выделив порождение данных в отдельный класс; (схема работы такая же как с БД в архитектуре с самописным BLL/DAL (т.е. в обход ADO.NET классов).
Не совсем понятно, что хотелось до меня донести...
Но в любом случаии нашел, что искал.
Вот: ddl.Items.Clear()
Всем спасибо.
CodeComplete отказался аботать? ;)
По поводу заполнения списка - я бы использовал технику привязки данных через ObjectSource, выделив порождение данных в отдельный класс; (схема работы такая же как с БД в архитектуре с самописным BLL/DAL (т.е. в обход ADO.NET классов).
Ой, чуть-чуть опоздал...
Но все равно спасибо.
Остальное - пытаюсь понять(читай Гуглю).
Еще раз спасибо.
Но в любом случаии нашел, что искал.
Вот: ddl.Items.Clear()
Всем спасибо.
Подумал, что интересует вопрос:
"На каком то этапе нужно заполнить его заново, то есть предварительно стерев всю инфу которую занес до этого."
Если элементы списка могут достаточно сильно варьироваться во время работы приложения то можно воспользоваться следующей схемой (ессно, код собственных классов размещать в App_Code):
1) создаешь класс объектов, которые будут представлять элемент списка, если важно только имя, то можно воспользоваться классом ListItem.
private int id = 0;
private string text = "";
public MyListItem(int id, string text) {
this.id = id;
this.text = text;
}
public int ID {
get { return id; }
}
public string Text {
get { return text; }
}
}
2) создаешь класс в котором реализуешь логику порождения объектов-элементов, для этого в классе определяешь статический метод, возвращающий коллекцию (массив, типизированное перечисление IEnumerable<YourListItem>, типизированную коллекцию ICollection<YourListItem>). Также никто не мешает совместить эти 2 класса:
private int id = 0;
private string text = "";
public MyListItem(int id, string text) {
this.id = id;
this.text = text;
}
public int ID {
get { return id; }
}
public string Text {
get { return text; }
}
public static MyListItem[] GetListItems() {
return new MyListItem[] {
new MyListItem(1, "Item 1"),
new MyListItem(2, "Item 2"),
new MyListItem(3, "Item 3"),
new MyListItem(4, "Item 4")
};
}
}
3) далее создаем на страничке ObjectSource для списка наших элементов:
ID="MyListItemsSource" runat="server"
EnableCaching="false"
TypeName="MyListItem"
SelectMethod="GetListItems" />
TypeName - класс провайдера данных.
SelectMethod - статический метод GetListItems возващающий массив элементов. Также можно определить методы для добавления/удаления/модификации элементов, если это предусмотренно логикой.
Кеширование отключено: запрос за элементами будет каждый раз при привязке данных к контролу (система сама это производит).
3) создаем на страничке нашу комбу:
ID="ddlMyListItems" runat="server"
EnableViewState="false"
DataSourceID="MyListItemsSource"
DataTextField="Text"
DataValueField="ID" />
Отключение ViewState позволит запрашивать данные у ObjectSource при каждом постбеке, в противном случае данные автоматом будут получены только при первом обращении к станицы, и в дальнейшем, придется вызывать ddlMyListItems.DataBind() для обновления содержимого комбы.
DataTextField - имя поля для отображения элементов.
DataValueField - имя поля, по которому определять значение выбранного элемента, нужно для SelectedValue.