Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Несколько вопросов по технологии создания корпоративного web интерфейса  (Прочитано 61233 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #30 : 13-09-2010 08:31 » 

ну ты же ссылку <A href = 'Default2.aspx'> формируешь на сервере, ну дык сформируй ее с теми параметрами, которые тебе нужны, ну так например (я ж не знаю, что нужно то)

<A href = 'Default2.aspx?id=12&product_id=234&categoty_id=83&my_lovely_parameter=BUBUBU'>

вообще вариантов масса, можно, например, разгрзить сервер + отделить данные от представления, т.е. формированием ссылок (а заодно и стилей и т.д.) заниматься на клиенте (и кнопки тоже на клиенте добавлять). Т.е. задача сервера только передать данные, например так:

TreeNode NewNode = new TreeNode("<data id=" + row["ID"].ToString() + " data1=" + row["CODE"].ToString() + " data2=" + row["SP1738"].ToString() + "/>");

а на клиенте раскрашивай как хочешь, чуть больше возни (и javascript надо знать), зато как чистенько получается с сервера только данные, на клиенте все что хочешь, хоть xsl применяй.
Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #31 : 30-09-2010 10:28 » 

Подскажите пожалуйста кто может, как в GridView
1) зафиксировать шапку?
2) сделать так чтобы строки сворачивались и разворачивались
по признаку
1
1.1
1.1.1
1.1.2
1.2
и т.д
GridView грузится из базы, вот Код:
Код:
<asp:Panel ID="Panel2" runat="server"
         
         Style="border-style: groove; position:absolute; top: 193px; left: 12px; width: 1237px; height: 639px;"
         ScrollBars="Vertical">
         
         <asp:GridView ID="GridView1" runat="server"
         Style =" position:absolute; top: -1px; left: -2px; width: 1223px; height: 645px;"
        DataSourceID = "SqlDataSource1" CellPadding="4"
        onselectedindexchanged="GridView1_SelectedIndexChanged"   ShowFooter="True"
       
         ForeColor="#333333" CellSpacing = "1"
         BorderWidth="1px" Font-Size="Small"
         AllowSorting="True" EnableSortingAndPagingCallbacks="True"
         HorizontalAlign="Center" PageSize="13"
         EnableTheming="True">
        <FooterStyle BackColor="#6699FF" ForeColor="White" Font-Bold="True" />
        <RowStyle BackColor="#EFF3FB" />
        <PagerStyle ForeColor="White" HorizontalAlign="Center" BackColor="#2461BF" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#6699FF" Font-Bold="True" ForeColor="White"
            BorderColor="#FFFFCC" Font-Size="Medium" />
        <AlternatingRowStyle BackColor="White" />
         </asp:GridView>
     </asp:Panel>
asp:SqlDataSource ID="SqlDataSource1" runat="server"
                ConnectionString="<%$ ConnectionStrings:.....2 %>"
                SelectCommand="SELECT ...... = @id"
                onselecting="SqlDataSource1_Selecting">
                <SelectParameters>
                <asp:QueryStringParameter Name = "id" QueryStringField = "id" />
                </SelectParameters>
            </asp:SqlDataSource>
Записан
sav-ledi
Участник

ru
Offline Offline

« Ответ #32 : 30-09-2010 11:30 » 

И если можно подскажите где косяк.
Я c javascript знакома поверхностно, а тем более как правильно интегрировать его в C#ный код знаю на интуитивном уровне.
Задача: рядом с некоторыми узлами в treeview отображается нечто типа imagebutton, реализованно это в aspx.cs так:
Код:
foreach (DataRow rowTemp in ResultSetTemp.Tables[0].Rows)
        {
            TreeNode NewNode = new TreeNode(rowTemp["CODETRIM"].ToString() + "_ " + rowTemp["SP2849TRIM"].ToString() + "<img src = 'http://localhost/InputButtonImage.gif' border = 0  onmouseout = 'Turn(1,0); over_header[1]=0;' onmouseover='Turn(1,1); over_header[1] = 1;'>", rowTemp["IDTRIM"].ToString());
            NewNode.PopulateOnDemand = false;
            NewNode.SelectAction = TreeNodeSelectAction.SelectExpand;
            node.ChildNodes.Add(NewNode);
        }



При наведений мыши на эту imagebutton, мне необходимо сделать всплывающее меню. Нашла пример, написала в .aspx вот это:

Код:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Электронный архив проектно-сметной документации"</title>
    <style>
.smenu
{
position:absolute;
padding: 5px;
width: 100px;
visibility:hidden;
background-color: #EEEEEE;
border: 1px solid gray;
}               
    </style>
<script language="javascript" type="text/javascript">
<!--
over_header = new Array();
over_menu = new Array();
for (i=1; i<=3; i++)
{
  over_header[i] = 0;
  over_menu[i]=0;
}
function Turn(id, mode)
{
  if(mode)
  eval("setTimeout(\"On(" + id + ");\", 200)");
  else
  eval("setTimeout(\"Off(" + id + ");\", 200)");
}
function On(id)
{
 eval("document.getElementById('smenu" + id + "')").style.visibility = "visible";
}
function Off(id)
{
  if(!over_menu[id] && !over_header[id])
  {
    eval("document.getElementByid('smenu" + id + "')").style.visibility = "hidden";
  }
}

-->
</script>
</head>



<div id="smenu1" class ="smenu" style="position:absolute; top:0; left: 0; width: 80"  onmouseover=" over_menu[1]=1;" onmouseout=" Turn(1,0); over_menu[1]=0">
     <a href ="Default2.aspx">Этапы</a>
     <a href ="Default3.aspx">Информация о документации</a>>
    </div>

Запускаю! Сообщение:
"Ошибка выполнения Microsoft JScript: Объект не поддерживает это свойство или метод!"
 и выделяет строку getElementByid('smenu1')
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #33 : 30-09-2010 14:53 » 

sav-ledi, в  getElementByid('smenu1') буква i написана с маленькой буквы, а надо с большой

Зачем в коде (код не смотрел, просто мельком глянул) столько eval? Это чтобы хорошенько по...париться при отладке?

Что касается javascript, то очень рекомендую посмотреть в сторону jquery
« Последнее редактирование: 30-09-2010 15:25 от lapulya » Записан

С уважением Lapulya
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #34 : 30-09-2010 15:01 » 

sav-ledi,
1) зафиксировать шапку?
2) сделать так чтобы строки сворачивались и разворачивались

По пункту 1 - что такое "зафиксировать шапку"? Из вопроса я так и не понял что нужно сделать.
По пункту 2 - надо это сделать на сервере или на клиенте?
« Последнее редактирование: 30-09-2010 15:03 от lapulya » Записан

С уважением Lapulya
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 30-09-2010 21:41 » 

lapulya, "зафиксировать шапку" означает, что вся страница должна быть непрокручиваемой, а внутри неё находится таблица, у которой прокручиваются только строки с данными, заголовки же остаются неподвижными сверху.

Действие по сворачиванию-разворачиванию заведомо предназначено для пользователя, т.е. клиент в этом будет участвовать в любом случае. С учётом разбиравшейся выше динамической подгрузки данных для дерева, скорее всего, аналогично и в данном случае.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #36 : 01-10-2010 01:31 » 

Если я правильно понял Димку про шапку (а он угадал то, что хочет топикстартер), то таблица, приходящая с сервера, имеет больше строк, чем хотелось бы видеть на экране и зафиксированная шапка + прокрутка строк позволит комфортно работать с данными не прокручивая страницу (эсли это не так, то я снова не понял что же нужно), тогда я бы решал проблему на клиенте и действовал бы примерно так...
1. создаем div на странице, внури которого бум отображать прокручиваемые строки таблицы. CSS задаем размеры и прокрутку содержимого у этого div
2. Грид без заголовка (отчнее он есть но скрыт) отдает данные именно в этот div
3. Выше div помещаем user control который на клиенте строит (копирует) шапку из скрытой шапки грида (причем копирует он не только данные, но и ширину каждого из столбцов, прописывая ее явно).

Это простой вариант попроще, но он менее удобный, если чуть серьезнее, то делаем серверный web control, который наследуем от грида и работает он как написано выше.

Теперь про разворачивание, то тут, как правильно заметил Димка, можно сделать как у дерева двумя вариантами:
1. разворачивать и сворачивать одними постбеками, тогда клиент тут ничего не делает (только запрос на сервер шлет, как при нажатии на серверную кнопку)
2. разворачивать и сворачивать javascript, но для этого надо или иметь все данные на клиенте, или асинхронно их подгружать.

Что бы не гадать, предлагаю для начала выбрать способ.

PS
Не сочтите за рекламу (я никакого отношения к товарищам не имею), но тут http://www.componentart.com/ есть на что посмотреть...
Вот тут всякие там гриды http://aspnetajax.componentart.com/control-specific/datagrid/features/core_features/default.aspx
А тут иерархические гриды http://aspnetajax.componentart.com/control-specific/datagrid/features/hierarchical_display/WebForm1.aspx

Оттуда можно интересные идеи и способы реализации спереть )))
« Последнее редактирование: 01-10-2010 01:54 от lapulya » Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #37 : 04-10-2010 04:00 » 

Спасибо огромное за ссалки, очень помог!!!
с косяками в javascript разобралась!
Теперь вопрос по sql server:
Как задать расписание для экспорта/импорта данных между базами!
есть рабочая база, которая постоянно доробатывается. если я делаю coonect к ней, то там постоянно весит пользователь, и сохранить конфигарацию разработчикам не удаётся. Чтоб этого не происходило, я (пока) ручками делаю экспорт необходимых мне таблиц в другую базу на этом же сервере, и connect устанавлию уже к ней! В рабочей базе данные постоянно обновляются. Как правильно автоматом обновлять данные через определённый промежуток времени?
Я почитала про DTS пакеты, но конкретных примеров или инструкций как задать это расписание пока не нашла!
если ко сталкивался подскажите!!!
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #38 : 04-10-2010 07:43 » 

Вообще это вопрос в другой раздел, который называется "Базы данных".

Для выполнения действий по расписанию смотреть нужно SQL Agent и его работы (job).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
sav-ledi
Участник

ru
Offline Offline

« Ответ #39 : 04-10-2010 09:13 » 

Щас наверное задам до ужаса ламеркий вопросс, но всё же:
Как автоматом связать всплывающее меню с элементами управления, если их сотни!
У меня прктически возле каждого элемента дерева отображается img, делается это в цикле
Как сделать так чтоб при наведении мыши на img появлялось это меню возле каждой img, а не в одном месте как сейчас!
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 04-10-2010 11:37 » 

sav-ledi, брать абсолютные координаты img в окне браузера и от них вычислять абсолютные координаты меню, затем устанавливать их для меню. Происходить это должно по наведению мышью - в том месте, где работает код, включающий показ меню.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #41 : 04-10-2010 12:08 » 

Можно как предложил Димка, а можно этого добиться построением соответствующего DOM. Т.е. когда меню не активно, оно скрыто, а когда его нужно показать, то блок в котором находится меню перемещается (не координатами, а сменой родителя) в нужное место и отображается.

В любом случае используя jquery это пол строчки кода.
Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #42 : 04-10-2010 12:31 » 

можно этого добиться построением соответствующего DOM. Т.е. когда меню не активно, оно скрыто, а когда его нужно показать, то блок в котором находится меню перемещается (не координатами, а сменой родителя) в нужное место и отображается.

В любом случае используя jquery это пол строчки кода.

а можно примерчик, по  поводу смены родителя? я это себе пока слабо предстовляю, ведь у меня эти img создаются вот так:
TreeNode NewNode = new TreeNode(rowTemp["CODETRIM"].ToString() + "_ " + rowTemp["SP2849TRIM"].ToString() + "<img src = 'http://localhost/InputButtonImage.gif' border = 0  onmouseout = 'Turn(1,0); over_header[1]=0;' onmouseover='Turn(1,1); over_header[1] = 1;'>", rowTemp["IDTRIM"].ToString());
а узлов в дереве пордка полутора тысяч!!!
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #43 : 05-10-2010 12:13 » 

ну примерно так... при этом количество узлов в дереве никакого значения не имеет, хоть миллион... (Димкино решение так же не зависит от количества узлов в дереве)
Код:
<script  type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function ()
{
var subMenu = $('#subMenuId');
$('#treeId div[name="leaf"] span').
mouseover(function (event)
{
subMenu.detach().appendTo(event.target).show();
}).
mouseout(function (event)
{
subMenu.hide();
});
});
</script>

    <form id="form1" runat="server">
<div id="treeId">
<div id="subMenuId" style="position:absolute; height:20px; width:20px; background-color: maroon;"></div>
Tree
<div name="leaf"><span>1</span>
<div name="leaf"><span>11</span></div>
<div name="leaf"><span>12</span>
<div name="leaf"><span>121</span></div>
<div name="leaf"><span>122</span></div>
</div>
</div>
<div name="leaf"><span>2</span></div>
<div name="leaf"><span>3</span>
<div name="leaf"><span>31</span></div>
<div name="leaf"><span>32</span></div>
<div name="leaf"><span>33</span></div>
</div>
</div>
    </form>

Ну это при условии, что контекстное меню у всех одинаковое
« Последнее редактирование: 05-10-2010 12:16 от lapulya » Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #44 : 06-10-2010 05:16 » 

МЕГА СПАСИБО!!!!
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #45 : 08-10-2010 13:43 » 

Во! Про шапку! Все решается использованием CSS без скрипта, оказывается overflow можно задать для tbody. См пример
http://www.htmldrive.net/items/demo/34/Pure-CSS-Scrollable-Table-with-Fixed-Header
Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #46 : 11-10-2010 05:14 » 

Слушайте, товарищи Коллеги!!!!
У меня новая проблема:
Подскажите в какую сторону смотреть!
Google даёт разные направления и htm, и WPF, и  ActivX и т.д....везде по чуть-чуть почитала, мозг вскипел!
Мне необходимо на одной из страниц своего web интерфейса разместить несколько графиков, которые должны стриться опять же по данным взятым из бд + параметры выбранные на самой странице.
например:
 просмотреть разницу  между планом и фактом(гистограмма) поставки оборудования(из бд) за определённый периуд времени(календарь на портале) по данной стройке(выбранный treenode из treeview)
Ваше мнение? как и с помощью какой технологии эту задачу лучше реализовывать???
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 11-10-2010 06:39 » 

Графики должны быть просто картинками или у них должны быть возможности для пользователя: изменять масштаб (приближать/отдалять), крутить (если 3D), трассировать (для указанной пользователем точки выдаются числовые значения по координатам), менять форму (переключаться между линиям/гистограммами и т.п.)?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #48 : 11-10-2010 09:18 » 

Присоединяюсь к Димке и до кучи:
1. Нужно готовое решение или надо самому написать посроитель графиков?
2. Надо строить графики на клиенте или сервере (ActiveX к серверу отношения не имеет скорее всего)?
3. Может нужен триллдаун?

PS
bar гистограмму забодяжить на клиенте - пара строчек на javascript (причем с дриллдаун и т.д.). Что-то фильдеперсовое надо на сервере картинкой/картинками делать.
« Последнее редактирование: 11-10-2010 09:26 от lapulya » Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #49 : 11-10-2010 09:58 » 

чтоб пользователь мог трассировать и изменять масштаб...

Добавлено через 19 минут и 47 секунд:
Присоединяюсь к Димке и до кучи:
1. Нужно готовое решение или надо самому написать посроитель графиков?
до лампочки!!! но хотелось бы самой написать(опыта набраться), но для примера не откожусь от готового решения!

2. Надо строить графики на клиенте или сервере (ActiveX к серверу отношения не имеет скорее всего)?

наверное всё же на сервере, так строиться будет по данным из бд

3. Может нужен триллдаун?

что такое триллдаун?

PS
bar гистограмму забодяжить на клиенте - пара строчек на javascript (причем с дриллдаун и т.д.). Что-то фильдеперсовое надо на сервере картинкой/картинками делать.

как забодяжить гистограмму на javascript если её опять же строить надо по данным из бд! но за примерчик благодарна буду!
« Последнее редактирование: 11-10-2010 10:18 от sav-ledi » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #50 : 11-10-2010 12:24 » 

Цитата: sav-ledi
чтоб пользователь мог трассировать и изменять масштаб...
Тогда лучше всего будет Flash или его аналоги типа Silverlight-объектов, JavaFX, можно и ActiveX и Java-апплет, но это устаревшие технологии. Если у клиентов браузер - не IE, то можно и собственный скриптовый движок сделать для элемента canvas.

График строить на клиенте в соотствующей среде, указанной выше, эта среда должна запрашивать данные с сервера.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #51 : 11-10-2010 15:54 » 

sav-ledi,
Цитата
наверное всё же на сервере, так строиться будет по данным из бд
ну дык оно и понятно, что данные из бд, кто бы сомневался... Но речь идет о построении, а не о получении данных, ну например:
Код:
<style type="text/css">
   .bar
   {
border:1px solid #0000ff;
width:15px;
float:left;
margin-right:5px;
   }
   .bar div
   {
-moz-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
writing-mode: tb-rl;
padding:1px;
   }    
   .axis
   {
border-left: 1px solid #000000;
border-bottom: 1px solid #000000;
float:left;
padding:5px;
   }
</style>

</head>
<body>

<script  type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function ()
{
var axis = $('<div class="axis"/>');
var max = 0;
$('span[name="data"] span').
each(function ()
{
var cur = 1 * $(this).attr('col3');
if (max < cur)
max = cur;
}).
each(function ()
{
var height = $(this).attr('col3');
var caption = $(this).attr('col2');
$('<div class="bar" style="height:' + height + 'px; margin-top:' + (max - height) + 'px"><div>' + caption + '</div></div>').
appendTo(axis);
}).remove();

axis.append($('<div style="clear:both"/>')).appendTo('#canvas');
});
</script>

    <form id="form1" runat="server">
<div id="canvas"></div>
    </form>

<span name="data" style="display:none" col1="Header1" col2="Header2" col3="Header3">
<span col1="1" col2="bu1" col3="123"></span>
<span col1="2" col2="bu2" col3="62"></span>
<span col1="3" col2="bu3" col3="49"></span>
<span col1="4" col2="bu4" col3="172"></span>
<span col1="5" col2="bu5" col3="81"></span>
<span col1="6" col2="bu6" col3="214"></span>
<span col1="7" col2="bu7" col3="89"></span>
<span col1="8" col2="bu8" col3="59"></span>
<span col1="9" col2="bu9" col3="36"></span>
<span col1="10" col2="bu10" col3="47"></span>
<span col1="11" col2="bu11" col3="127"></span>
</span>
Данные заключены в span чисто для того, что бы их понял ie, для других браузеров можно использовать другие теги

Цитата
что такое триллдаун?

дриллдаун это когда столб гистрограммы по клику раскрывается в целую гистограмму, ну например есть гистограмма отображающая продажи за год по месяцам, а при клике на столб конкретного месяца открывается гистограмма продаж ха этот месяц в разрезе продажников.

Цитата
как забодяжить гистограмму на javascript если её опять же строить надо по данным из бд! но за примерчик благодарна буду!

см пример выше

Добавлено через 12 минут и 12 секунд:
sav-ledi,
Если ломает или долго/не красиво и т.д.
http://www.jqplot.com/
http://jurius.name/work/javascript/2010/5-plaginov-k-jquery-dlya-risovaniya-grafikov.html
http://moradan.sopovs.com/2009/12/jquery.html
« Последнее редактирование: 11-10-2010 16:11 от lapulya » Записан

С уважением Lapulya
sav-ledi
Участник

ru
Offline Offline

« Ответ #52 : 12-10-2010 03:35 » 

Спасибо огромное! поняла что javascript лучший наверное вариант, попробую!
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #53 : 12-10-2010 11:40 » 

Javascript хорош, но для определенных целей. Вот посмотри, что можно сделать, если формировать графики на сервере (или как вариант использовать флеш на клиенте, при условии, что html5 не используется)

http://aspnetajax.componentart.com/control-specific/chart/interactive_demos/toolbar/default.aspx
http://aspnetajax.componentart.com/design-showcase/chart/default.aspx
Записан

С уважением Lapulya
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #54 : 17-10-2010 11:55 » 

Не могу редактировать свое сообщение, поэтому добавляю новое ((

Вот еще интересно (сильверлайт)
http://www.componentart.com/products/dv/charting.aspx
Записан

С уважением Lapulya
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines