Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Деструктор для DropDownList

331
10 октября 2007 года
alexburzak
335 / / 23.04.2006
В коде сделал DropDownList (веб-контроль)
Заполнил его вот так:
ddlCompanyProduct.Items.Add("myText")
ddlCompanyProduct.Items(0).Value = "AllCompany"
ddlCompanyProduct.Items(0).Selected = True
На каком то этапе нужно заполнить его заново, то есть предварительно стерев всю инфу которую занес до этого.
Вопрос как это можно сделать?
Нужно что-то вроде деструктора для DropDownList
Инструменты: VB.NET FrameWork 2.xxxxxxxx
Есть такая вещь?
5
10 октября 2007 года
hardcase
4.5K / / 09.08.2005
Если отключить ViewState для него то не придется ничего стирать.
331
11 октября 2007 года
alexburzak
335 / / 23.04.2006
Ты просто гений! Точней это мне нужно бится головой об стенку. ;-)
Такое простое решение, как я сам не дошел? Вот что делает .NET с людьми! Спасибо огромное.
331
11 октября 2007 года
alexburzak
335 / / 23.04.2006
Цитата: hardcase
Если отключить ViewState для него то не придется ничего стирать.


Написал, достаточно сложный поиск.
Но при тестировки его выяснилось, что все таки желательно не отключать ViewState а именно "стирать" все данные которые были занесенны ранее...
В связи с чем снова тот же вопрос:
Как можно "стереть" те айтомы(items) которые занес ранее?

713
12 октября 2007 года
Ap0k
360 / / 13.03.2006
Цитата: alexburzak

Как можно "стереть" те айтомы(items) которые занес ранее?


this.Load + this.Page.IsPostBack

5
12 октября 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: alexburzak
Как можно "стереть" те айтомы(items) которые занес ранее?


 
Код:
DropDownList1.Items.Clear();

CodeComplete отказался аботать? ;)

По поводу заполнения списка - я бы использовал технику привязки данных через ObjectSource, выделив порождение данных в отдельный класс; (схема работы такая же как с БД в архитектуре с самописным BLL/DAL (т.е. в обход ADO.NET классов).
331
12 октября 2007 года
alexburzak
335 / / 23.04.2006
Цитата: Ap0k
this.Load + this.Page.IsPostBack


Не совсем понятно, что хотелось до меня донести...
Но в любом случаии нашел, что искал.
Вот: ddl.Items.Clear()
Всем спасибо.

331
12 октября 2007 года
alexburzak
335 / / 23.04.2006
Цитата: hardcase
 
Код:
DropDownList1.Items.Clear();

CodeComplete отказался аботать? ;)

По поводу заполнения списка - я бы использовал технику привязки данных через ObjectSource, выделив порождение данных в отдельный класс; (схема работы такая же как с БД в архитектуре с самописным BLL/DAL (т.е. в обход ADO.NET классов).



Ой, чуть-чуть опоздал...
Но все равно спасибо.
Остальное - пытаюсь понять(читай Гуглю).
Еще раз спасибо.

713
13 октября 2007 года
Ap0k
360 / / 13.03.2006
Цитата: alexburzak
Не совсем понятно, что хотелось до меня донести...
Но в любом случаии нашел, что искал.
Вот: ddl.Items.Clear()
Всем спасибо.


Подумал, что интересует вопрос:
"На каком то этапе нужно заполнить его заново, то есть предварительно стерев всю инфу которую занес до этого."

5
13 октября 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: alexburzak
Остальное - пытаюсь понять(читай Гуглю).


Если элементы списка могут достаточно сильно варьироваться во время работы приложения то можно воспользоваться следующей схемой (ессно, код собственных классов размещать в App_Code):
1) создаешь класс объектов, которые будут представлять элемент списка, если важно только имя, то можно воспользоваться классом ListItem.

Код:
public class MyListItem {
    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 класса:
Код:
public class MyListItem {
    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 для списка наших элементов:
 
Код:
<asp:ObjectDataSource
    ID="MyListItemsSource" runat="server"
    EnableCaching="false"
    TypeName="MyListItem"
    SelectMethod="GetListItems" />

TypeName - класс провайдера данных.
SelectMethod - статический метод GetListItems возващающий массив элементов. Также можно определить методы для добавления/удаления/модификации элементов, если это предусмотренно логикой.
Кеширование отключено: запрос за элементами будет каждый раз при привязке данных к контролу (система сама это производит).

3) создаем на страничке нашу комбу:
 
Код:
<asp:DropDownList
    ID="ddlMyListItems" runat="server"
    EnableViewState="false"
    DataSourceID="MyListItemsSource"
    DataTextField="Text"
    DataValueField="ID" />

Отключение ViewState позволит запрашивать данные у ObjectSource при каждом постбеке, в противном случае данные автоматом будут получены только при первом обращении к станицы, и в дальнейшем, придется вызывать ddlMyListItems.DataBind() для обновления содержимого комбы.
DataTextField - имя поля для отображения элементов.
DataValueField - имя поля, по которому определять значение выбранного элемента, нужно для SelectedValue.
331
13 октября 2007 года
alexburzak
335 / / 23.04.2006
Спасибо! Вместе с Гуглей разложил все по полочкам. Так и буду делать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог