Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтобы обьект мог быть DataSource 
:(
    Опции темы
Хоббит
Дата 24.6.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Какой интерфес должен реализовать обьект, чтобы его можно было скармливать в контролы в качестве DataSource  (в комбобох в датагрид и.т.д.) 
PM MAIL   Вверх
arilou
Дата 24.6.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



IEnumerable (колекции, массивы и проч.) 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Хоббит
Дата 24.6.2006, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



постомрел ... он интерфейс имеет один метод GetEnumerable а что я должен описать в этом методе....?
 smile

Добавлено @ 18:39 
в общем  у меня имеется класс (он представляет собой семейство обьектов.. каждый обьект имеет поля name description b/n/l/) надо чтобы после того как я этот обьект скормлю датагриду в качестве датиасоурца он отобразился в виде таблицы ... то есть колонки есть свойства обьекта(имя описание) а строчки это каждый элемент семейства....
??? 
PM MAIL   Вверх
Gleb
Дата 24.6.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 11.6.2005

Репутация: 1
Всего: 1



GetEnumerable() должен возвратить интерфейс IEnumerator, т.е. вам нужно реализовать следующие методы:
Код

public class someClass : IEnumerator, IEnumerable
.....
private int[] someArray;  //к примеру ваш класс инкапсулирует массив
int pos = -1;             //внутренний указатель

public bool MoveNext()
{
//передвинуть внутренний указатель на одну позицию
    if (pos < someArray.Length)
    {
        pos++;
        return true;
    }
    else
        return false;
}
public void Reset()
{
//установить внутренний указатель на начало набора
    pos = 0;
}
public object Current
{
//получить текущий элемент набора
//object Current {get;}
        get {return someArray[pos];}
}
public IEnumerator GetEnumerable()
{
        return (IEnumerator)this;
}
   

Это сообщение отредактировал(а) Gleb - 24.6.2006, 19:21
PM MAIL   Вверх
Void
Дата 24.6.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Вообще-то требуется не IEnumerable, а IList или System.ComponentMode.IListSource.. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
arilou
Дата 24.6.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Корректнее сказать, что 

Цитата

Interfaces Related to Data Binding 

IList interface

A class that implements the IList interface could be an Array, ArrayList, or CollectionBase. These are indexed lists of items of type Object. These lists must contain homogenous types, because the first item of the index determines the type. IList would be available for binding only at run time. 

.......

IEnumerable interface

A class that implements the IEnumerable interface is typically consumed by ASP.NET. Windows Forms support for this interface is only available through the BindingSource component.
 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Хоббит
Дата 25.6.2006, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Понятно ...но тогда данный обтект может использоваться в качесве списка... так получается заполнить листбоксы комбобоксы и.т.д.

А вот как с дата гридом? Читай вопрос выше? 
PM MAIL   Вверх
Хоббит
Дата 25.6.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



В прниципе такой вопрос можно было бы решить так... когда меняется создать свой обьет наследовать датагрид .. в обработчике изменения датасоурца самостоятельно создать нужные столбцы и их заполнить... вот вопрос тогда такой
как по обьекту получить имена его свойств в виде стринг и как по именам свойсв обьекта обратиться к их значениям .... 
 smile  
PM MAIL   Вверх
arilou
Дата 25.6.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Хоббит @  25.6.2006,  07:36 Найти цитируемый пост)
А вот как с дата гридом? Читай вопрос выше?  

С датагридом точно так же. Главное условие - на колонки грида можно мапить только свойства объектов в списке, не поля.

Цитата(Хоббит @  25.6.2006,  09:51 Найти цитируемый пост)
В прниципе такой вопрос можно было бы решить так... когда меняется создать свой обьет наследовать датагрид .. в обработчике изменения датасоурца самостоятельно создать нужные столбцы и их заполнить... вот вопрос тогда такой
как по обьекту получить имена его свойств в виде стринг и как по именам свойсв обьекта обратиться к их значениям

Че та ты тут намутил-намутил  smile Настраиваешь грид, колонки мапишь на свойства и усе. Reflection тут не нужен.

Или я не понял твой вопрос 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Хоббит
Дата 25.6.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



ладно.. как мапить колонки на свойства .. лопустим есть

Код

class Item
{
  private string name;
  public string Name{get{return name;} set{name = value;}}
  private string description;
  public string Description{get{return description;} set{description = vlue;}}

  public item(){}
}

class ItemCollection : CollectionBase
{
  public ItemCollection(){}
  public void Add(Item newItem)
  {
    List.Add(newItem);
  }
  
  public void Remove(Item oldItem)
  {
    List.Remove(oldItem);
  }
}


теперь надо сделать датагрид передать в него это семейство...
и в нем должно появиться колонки типа name и description и строки типа все элементы семейства 
PM MAIL   Вверх
Void
Дата 25.6.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Хоббит, осталось только:
Код
ItemCollection items = new ItemCollection();
...
dataGrid.DataSource = items;

smile 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Хоббит
Дата 25.6.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



гы ... тормоз .. я .... ндя ... а думал что то еще там надо .. выкручивать smile гы 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.