Здравствуйте, Pharaoh, Вы писали:
P>И один практический:
P>Мой реализованный датасурс соглашается биндить только ToString() объектов, а как сделать чтобы биндились паблик свойства?
P>Объект:
P>байндю в тривью так:
P> <asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Priority" />
P>или так:
P> <asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Id" />
P>одна и та же ошибка:
P>Could not bind to the 'Priority' property (specified by ValueField) while data binding TreeView. Please check the Bindings fields.
P>У меня есть предположение, что возможно чтобы обьект стал данными надо или интерфейс какой-то описать или как то выделить свойства — данные, но как?
Не пробовали добавить к классу не просто public поля, а именно свойства, и их биндить?
т.е. сделать где-то так
public int Priority
{
get{return _priority;}
set{_priority=value;}
}
P.S.
с деревом не работал
Введение: жил я раньше убого и всю работу делал в кодбихайнде, но потом дошло, как прекрасна система работы с данными в .NET, стал работать с источниками данных, радовался долго, но сейчас уткнулся носом в проблемму.
Не уж то в дотнете нет источника данных для работы с древовидными структурам?
Сразу напрашивается "как же нет, есть — вон они и xmldatasource и сайтмап и даже абстрактный HierarchicalDataSourceControl". Однако проанализировав это все, особенно последний, я ршения не нашел.
Все на что они способны: организовать навигацию и отредактировать xml'ку. А как реализовать банальный каталог товаров? Напрашивается опять ответ HierarchicalDataSourceControl. НО как не искал не нашел в нем способа редактирования данных. Все, что нашел
это.
Задача то банальна: без кодбихайнда отредактировать древовидную структуру — на каждом втором проекте встает сей вопрос. Я уже смирился с судьбой писать этот датасурс, но и это не помогло — не хватает редактирования (или моего понимания этого редактирования) чтобы полностью инкапсулироваться за датасурс.
По сему два философских вопроса к сообществу:
1) Есть ли придусмотренный микрософтом способ управления древовидными структурами? кроме xml.
2) Как вы подходите к этой задаче?
И один практический:
Мой реализованный датасурс соглашается биндить только ToString() объектов, а как сделать чтобы биндились паблик свойства?
Объект:
public class HPage : IHierarchyData
{
public Guid Id;
public Guid Parent;
public string Title;
public Guid Master;
public int Priority;
private string path;
...
public object Item
{
get { return this; }
}
public override string ToString()
{
return this.Title;
}
}
байндю в тривью так:
<asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Priority" />
или так:
<asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Id" />
одна и та же ошибка:
Could not bind to the 'Priority' property (specified by ValueField) while data binding TreeView. Please check the Bindings fields.
У меня есть предположение, что возможно чтобы обьект стал данными надо или интерфейс какой-то описать или как то выделить свойства — данные, но как?
Здравствуйте, Lao, Вы писали:
Lao>Не пробовали добавить к классу не просто public поля, а именно свойства, и их биндить?
Lao>т.е. сделать где-то так
Lao>Lao>public int Priority
Lao>{
Lao> get{return _priority;}
Lao> set{_priority=value;}
Lao>}
Lao>
Lao>P.S.
Lao>с деревом не работал
Не успел, поскольку сроки поджимают, забил на инкапсуляцию и делаю все в событиях treeview, как старый дельфятник :- \ ибо даже решение этой проблемы не спасло бы от танцев с бубном для редактирования.
За совет спасибо, как встанет подобная задача — попробую

а некоторые документы говорят, что она встанет довольно скоро.
Здравствуйте, Pharaoh, Вы писали:
P>Не успел, поскольку сроки поджимают, забил на инкапсуляцию и делаю все в событиях treeview, как старый дельфятник :- \ ибо даже решение этой проблемы не спасло бы от танцев с бубном для редактирования.
P>За совет спасибо, как встанет подобная задача — попробую
а некоторые документы говорят, что она встанет довольно скоро.
Lao прав. Биндинг в основном работает на GetProperies(), а не GetMembers(), по сему надо делать public properties.
Здравствуйте, B0rG, Вы писали:
BG>Lao прав. Биндинг в основном работает на GetProperies(), а не GetMembers(), по сему надо делать public properties.
Только что опробовал. Действительно.
Жаль, капля уважения упала с моего стакана почтения микрософта — я думал они навсегда стерли разницу между свойством и полем

оказалось — нет. Спасибо, я не знал, что поля НЕ конвертируются в свойства, почитал, узнал.
зы: Всегда не любил делать локальные поля только для глобального свойства, если никакой обработки не происходит.
Здравствуйте, Pharaoh, Вы писали:
P>Только что опробовал. Действительно.
P>Жаль, капля уважения упала с моего стакана почтения микрософта — я думал они навсегда стерли разницу между свойством и полем
оказалось — нет. Спасибо, я не знал, что поля НЕ конвертируются в свойства, почитал, узнал.
P>зы: Всегда не любил делать локальные поля только для глобального свойства, если никакой обработки не происходит.
На мой взгляд в этом есть определенная сермяжность

Бо филды, все таки филды, а проперти уже совсем другой разговор. Просто идеология такая, и они ее кстати во многих вещах придержиются. В любом датабиндинге будет такая же ситуация.
Здравствуйте, Pharaoh, Вы писали:
P>я думал они навсегда стерли разницу между свойством и полем
оказалось — нет.
И слава богу что нет
Ежели череп прогрызла мышь — время забыть о былом