|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 18:38
Сообщ.: 68,
Visits: 382
|
|
| Помогите, пожалуйста, разобраться. Есть собственный контрол, в котором атрибут: public string currency{ get { return m_strCurrency; } set { m_strCurrency = value; } } Если я его вставляю на странице так: < MyControls:PriceItem currency="WMZ" runat="server" />То все получается хорошо. Если пытаюсь ему передать ранее полученного значение переменной, то ничего не выходит: <MyControls:PriceItem currency="<%=strValue1%>" runat="server" /> Переменная strValue1 однозначно объявлена как string и проинициализирована в фоновом коде этой страницы. Что не так?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Такой синтаксис недопустим. Блок <%=%> выполняется в момент рендеринга страницы, а объекты на странице создаются раньше. Присваивай значение своему контролу из кода страницы.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 18:38
Сообщ.: 68,
Visits: 382
|
|
Вот так вот:< script language="C#" runat="server">public PriceItem Item1; Item1.currency = strValue1 </ script>Не получилось :-( Пишет: Invalid token '=' in class, struct, or interface member declaration
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 18:38
Сообщ.: 68,
Visits: 382
|
|
| Пардон, торможу :-) Вот этот код работает:
<% Item1.currency = strCurrency; %> <MyControls:PriceItem ID="Item1" runat="server" />
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Подобный код (Item1.currency = strValue1) должен находиться внутри какой-нибудь функции. На уровне класса можно инциализировать только поля класса, но не поля полей.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 18:38
Сообщ.: 68,
Visits: 382
|
|
| О, да, точно! Функция - это красиво и стройно. Вот этот код работает: <script language="C#" runat="server"> public void InitPriceItem(PriceItem Source, Int16 iPrice) { Source.currency = strCurrency; Source.price = iPrice; } </script> На странице: <% InitPriceItem(Item1, iPrice); %> <MyControls:PriceItem ID="Item1" runat="server" />
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Не понимаю зачем ты делаешь вызов из кода страницы в блоке <% %>. Не лучше ли перенести этот вызов в событие Load страницы? Ведь наверняка iPrice иницилизируется у тебя там же.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 18:38
Сообщ.: 68,
Visits: 382
|
|
| Ну, я еще не вполне разобрался с пользовательскими контролами. Load у меня, действительно обрабатывается в фоновом коде страницы и там все переменные инициализируются. На странице, где вставляются контролы я написал так: <%@ Register TagPrefix="MyControls" TagName="PriceItem" Src="PriceItem.ascx" %> А как работать с этим контролом в фоновом коде страницы еще не разобрался :-) как подключить, объявить и т.п.
|
|
|
|