Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
1

Как увидеть windows-кий объект в Web-форме на стороне сервера?

09.11.2010, 08:47. Показов 1232. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добавил на Web-форму dtPicker (clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1). Но как считать на стороне сервера выбранную в нем дату?

ПО-МО-ГИ-ТЕЕЕЕЕ!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2010, 08:47
Ответы с готовыми решениями:

Web Forms валидация на стороне сервера
Здравствуйте. Начал изучать вебформы. И не могу найти пример валидации вводимых данных на стороне...

Как увидеть объект Session и объект Server из модуля класса?
В модуле класса пишу: 'Provider=Microsoft.Jet.OLEDB.4.0;' & _ 'Data Source=' &...

Можно ли создать Объект Excel на строне Web сервера (IIS)?
Можно ли создать Объект Excel на строне Web сервера (IIS) непример, как-нибудь так: Variant XL...

Можно ли создать Объект Excel на строне Web сервера (IIS) ?
Можно ли создать Объект Excel на строне Web сервера (IIS) непример, как-нибудь так: Variant XL...

7
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.11.2010, 09:37 2
Покажите код как вы его добавили.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
09.11.2010, 09:42  [ТС] 3
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<OBJECT id='clndDateTo' style='FONT-SIZE: 8pt; WIDTH: 79px; HEIGHT: 20px' classid='clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1'
                                            name='clndDateTo' VIEWASTEXT>
                                            <PARAM NAME='_ExtentX' VALUE='2090'>
                                            <PARAM NAME='_ExtentY' VALUE='529'>
                                            <PARAM NAME='_Version' VALUE='393216'>
                                            <PARAM NAME='MousePointer' VALUE='0'>
                                            <PARAM NAME='Enabled' VALUE='1'>
                                            <PARAM NAME='OLEDropMode' VALUE='0'>
                                            <PARAM NAME='CalendarBackColor' VALUE='-2147483643'>
                                            <PARAM NAME='CalendarForeColor' VALUE='-2147483630'>
                                            <PARAM NAME='CalendarTitleBackColor' VALUE='-2147483633'>
                                            <PARAM NAME='CalendarTitleForeColor' VALUE='-2147483630'>
                                            <PARAM NAME='CalendarTrailingForeColor' VALUE='-2147483631'>
                                            <PARAM NAME='CheckBox' VALUE='0'>
                                            <PARAM NAME='CustomFormat' VALUE=''>
                                            <PARAM NAME='DateIsNull' VALUE='0'>
                                            <PARAM NAME='Format' VALUE='171245569'>
                                            <PARAM NAME='UpDown' VALUE='0'>
                                            <PARAM NAME='CurrentDate' VALUE='38231'>
                                            <PARAM NAME='MaxDate' VALUE='2958465'>
                                            <PARAM NAME='MinDate' VALUE='-109205'>
                                        </OBJECT>
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.11.2010, 10:31 4
Этот объект отправляет данные как обычный элемент формы.
Соотв. выбранное значение модео получить после отправки формы с помощью Request.Form['clndDateTo']
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
09.11.2010, 11:04  [ТС] 5
Огромное спасибо.
А как при загрузке страницы установить (задать) в нем нужную мне дату?
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.11.2010, 11:51 6
За текущую дату отвечает параметр
<PARAM NAME='CurrentDate' VALUE='38231'>
Он указывает кол-во дней прошедших с 30 декабря 1899 года

Самый простой способ установить дату это использовать такой синтаксис:
<PARAM NAME='CurrentDate' VALUE='<%=daysSince1899%>'>
В классе страницы должно быть общедоступное (public) свойство или переменная в котором и хранится кол-во прошедших дней. Рассчитать этот промежуток можно с помощью методов структуры DateTime

Более сложный, но предпочтительный способ, - 'обернуть' генерацию HTML кода для этого ActiveX в Web-control и использовать его как обычный элемент управления - т.е. объявляя его как protected член страницы и работая с ним через свойства и методы. Он будет скрывать детали представления даты и выдавать ее сразу как значение DateTime. Тогда этот элемент можно будет легко использовать в других веб-формах.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
09.11.2010, 11:59  [ТС] 7
Первый из предложенных методов более менее мне понятен.
А не могли бы Вы более подробно остановиться на втором? Учитывая что я совсем новичок в VB.NET
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.11.2010, 18:12 8
Это очень больщая тема. Поэтому за подробностями отсылаю вас к документации
.NET Framework SDK -> Building Applications -> Creating ASP.NET Web Applications -> Developing ASP.NET Server Controls

Чтобы немного помочь вот пример на C# базовой функциональности для такого элемента управления.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Specialized;
using System.Globalization;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace MyControls
{
    public class ActiveXDateTimePicker : WebControl, IPostBackDataHandler
    {
        public ActiveXDateTimePicker() :
                    base(HtmlTextWriterTag.Object)
        {
        }
 
        public DateTime CurrentDate
        {
            get { return ((null == ViewState['CurrentDate']) ? DateTime.Now : (DateTime)ViewState['CurrentDate']); }
            set { ViewState['CurrentDate'] = value; }
        }
 
        // IPostBackDataHandler.LoadPostData
        public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
        {
            if (null != postCollection[postDataKey])
            {
                DateTime postBackDate = DateTime.Parse(postCollection[postDataKey], new CultureInfo('en-US'));
                if (postBackDate != CurrentDate)
                {
                    CurrentDate = postBackDate;
                    return true;
                }
            }
 
            return false;
        }
 
        // IPostBackDataHandler.RaisePostDataChangedEvent
        public void RaisePostDataChangedEvent()
        {
            HttpContext.Current.Trace.Write('RaisePostDataChangedEvent');
        }
 
        [PermissionSet(SecurityAction.Demand, Name='FullTrust')]
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);
            writer.AddAttribute('classid', 'clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1');
            writer.AddAttribute(HtmlTextWriterAttribute.Name, this.ID);
        }
 
        [PermissionSet(SecurityAction.Demand, Name='FullTrust')]
        protected override void RenderContents(HtmlTextWriter writer)
        {
            int daysSince1899 = CurrentDate.Subtract(new DateTime(1899, 12, 30)).Days;
            writer.Write('<param name= 'CurrentDate ' value= ''+daysSince1899+' '>');
        }
    }
}
В начале ASPX файла
<%@ Register TagPrefix='MyCtl' Namespace='MyControls' Assembly='MyAssembly' %>
Замените строку MyAssembly на имя сборки где содержится класс ActiveXDateTimePicker. Обычно это имя dll файла без расширения.

Для вставки элемента управления на страницу используем следующий код
<MyCtl:ActiveXDateTimePicker id='xxx' CurrentDate='08/31/2003' runat='server' />

Это всего лишь базовый пример для разработки элемента управления ASP.NET. Код еще требует доработки.
Например, свойство CurrentDate возвращает дату вместе с временем, если во ViewState нет предыдущего значения.
Из-за этого будет генерироваться событие изменения элемента управления, даже если пользователь не изменил ее значения, но станет ввжно в случае наличия события OnChange для этого элемента.

Что еще нужно сделать:
- добавить возможность обработки события изменения элемента управления
- исправить вышеописанную ошибку
- добавить свойства контролирующие внешний в
0
09.11.2010, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2010, 18:12
Помогаю со студенческими работами здесь

Как увидеть диск сервера VPN
Впервые работаю с VPN. Подключился к серверу VPN. А как мне увидеть его диск? (В сетевом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru