![]() |
|
Модераторы: gambit |
![]()
|
|
| makosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
Проблема следующая: есть контрол, у него есть свойство, задающееся на aspx и указывающее путь к xml файлу. Этот файл надо получить в конструкторе этого контрола и построить по находящимся в нем данным дефолтовые значения. При этом некоторые из этих значений могут быть определены также на aspx, и не должны перезатираться дефолтовыми. Поэтому и приходится обрабатывать XML еще в конструкторе, до инициализации. Кто знает, как получить указанное значение до инициализации, подскажите плиз!
|
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
makosh, может быть гораздо более простой и логичный способ будет попросту проверят не определены ли эти параметры уже в this.Page ??? это намного проще будет как по мне...
-------------------- |
|||
|
||||
| makosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
Mymik, Можно поподробнее, что значит проверить?
И еще маленькая деталь: одно из свойств - это грид (ComponentArt) со всеми вытекающими, т.е. на aspx код выглядит примерно так: <WC:CBPanelGrid XmlFileGridProperties="~/GridStyle.xml" ID="CBGrid1" runat="server"> <Grid OnNeedRebind="CBGrid1_OnNeedRebind" Width="50%" runat="server"> <Levels> <CA:GridLevel ShowTableHeading="true" > <Columns> <CA:GridColumn DataField="ID" HeadingText="hidden" Visible="false"/> <CA:GridColumn DataField="Name" HeadingText="Имя" EditControlType="TextBox"/> </Columns> </CA:GridLevel> </Levels> </Grid> </WC:CBPanelGrid> и в xml файле переопределяются свойства грида и уровней грида. Я пока даже не представляю, каким образом можно проверить определены ли они на странице (это был бы тоже вариант) |
|||
|
||||
| makosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
Сорри, забыла сказать: пишу на C#.
|
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Не знаком с этим компонентом, так что даже и не представляю что за вытекающии..
Если они могут быть определены, значит ты их можешь как-то доставать, так ??? Из этого следует, что ты можешь проверять, определены ли они или нет. Если эти свойства определены в aspx. Может быть стоит дописать еще свойства для этого UserWebConrol'а и при построении контрола проверять не равны ли нулю эти свойства ??? Это че такое ??? это просто свойство твоего UserWebControl ??? а то я что-то не сильно понял твой кусок кода Кстати, возьми его в тэг Сode=xml Биндишь ты свой контрол, а точнее ее содержимое какое-то руками ??? или автоматически ??? Если руками, тогда давай ты загрузишь этот XML и потом пройдешься по нему и изменишь данные. Если не автоматически, то после того как загрузились данные, ты пройдись по контролу и переопредели те данные что определены непосредственно в aspx. ------------------------------------------------------------------------------ Что хранится в твоем xml ??? -- Настройки отображаемого компонента, или там хранятся данные ??? -- Или там все вместе хранится ??? (т.е. у таблицы свойства это настройки вида, а Node'ы это данные отображаемые) ------------------------------------------------------------------------------ Самый простой способ(а так же все на что я могу догадаться имея в распоряжении те данные что ты предложил) В твой компонент добавляем еще все те свойства что могут быть переопределены. После того как загрузился xml файл. Загрузить твой xml, после этого видоизменить в соответствии с теми свойствами что были определены или отличны от дефолтовых значений. А потом уже отдать на бинд. Если же не подходит, давай рассказывай что у тебя в том xml и что обозначает твой кусок кода... я допустим не понимаю что за свойства там... -------------------- |
|||
|
||||
| makosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
суть состоит в том, что во всем проекте единый дизайн для всех гридов, но отдельные свойства (напр., ширина и высота - и не только) могут меняться на некоторых страницах. Поэтому хотелось бы весь дизайн хранить в xml файле, но иметь возможность переопределить любое свойство на странице, при этом все остальные беря из файла. Надо заметить, что возможна ситуация, когда в xml свойство было переопределено, на странице оно тоже переопределено, причем его значение на странице совпадает с изначальным дефолтовым
вот ВСЕ свойства моего контрола: private string _XmlFileGridProperties; private ComponentArt.Web.UI.Grid myGrid; public string XmlFileGridProperties { get { if (_XmlFileGridProperties == string.Empty) { _XmlFileGridProperties = ""; } return _XmlFileGridProperties; } set {_XmlFileGridProperties = value;} } [PersistenceMode(PersistenceMode.InnerProperty)] public ComponentArt.Web.UI.Grid Grid { get {return myGrid;} set{myGrid = value;} } все остальное - что внутри тега Grid - это свойства уже существующего грида этот грид плох тем, что от него нельзя унаследоваться :(
именно так я и делаю, но опять-таки я могу его загрузить только на событии OnInit и не могу определить было ли определено это свойство на странице. Вот пройтись по контролу и переопределить те данные что определены непосредственно в aspx - я пока не нашла, как это можно сделать по поводу доставать: у этого грида есть уже заданные по умолчанию значения и конечно я их могу доставать. Но нулю они, к сожалению, не равны конечно можно было бы попробовать сравнивать их дефолтовые значения, но в случае, если на странице они определены равными дефолтовым, то мы не узнаем надо ли заменять их значениями из файла Это сообщение отредактировал(а) makosh - 29.3.2007, 20:31 |
|||
|
||||
| Mymik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Почему только в OnInit ??? почему в Page_Load или еще где-то в другом методе ты не можешь его загрузить ???
А в чем трудность ??? Если свойства в контроле не readonly и переопределенные скойства в Aspx носят одинаковые именя, тогда можно сделать с помощью System.Reflection
где this.Page это объект страницы aspx к которой принадлежит контрол Grid это объект твоего грида. Вроде бы нигде не ошибся... Если где ошибся, то подправь, в принципе идея тут прослеживается (как мне кажется) Если возникает где-то в другом месте трудность, то опиши по какой причине ты не можешь достучаться... А какая разница тогда ??? т.е. даже если мы их заменим, то они все равно будут теме же... какая разница ??? т.е. если число 20 заменить на число 20 то сам смысл этого не поменяется... -------------------- |
||||
|
|||||
| makosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
наверное, вся проблема была в том, что я плохо знаю System.Reflection и не догадалась, что нужно было Invoke вызвать. Еще не проверяла, сейчас куча работы, которую надо было "еще вчера" сделать, на выходных проверю. Спасибочки за помощь!
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |