Существует TreeView, которым наша команда пользуется уже три или четыре года, что дает нашим пользователям Internet Explorer возможность просто просматривать данные из базы данных MS Access и MSSQL 2005 Server в одном списке TreeView.
С момента разработки этого у нас возникла дилемма. Пользователям начинают разрешать использовать Google Chrome и Firefox, которые не были включены в исходный вариант использования и не совместимы с элементом управления TreeView ActiveX. Этот объект закодирован вне Internet Explorer. Я полагаю, что оригинальная идея для этого пришла от этого типа Windows Common Control .
Что может быть простой альтернативой, позволяющей сделать это возможным с использованием JQuery или другой технологии, при условии, что в настоящее время существует ограничение на недоступность серверных сценариев ?
Опять же, цель здесь - сделать его совместимым с большинством основных браузеров.
Примечание: я пытался сделать доступными сценарии на стороне сервера, но это не вариант для этого проекта. Таким образом, ответы должны , а не с использованием JSP
, PHP
, ASP
и т. Д. Вместо этого попытка найти способ сделать это с использованием локального файла в общая сеть .
И да, я знаю уязвимости безопасности, связанные с этим типом установки ... независимо от того, каково было направление.
Например, вот используемый объект:
<body onload="SetupPage()">
<object classid="CLSID:C74190B6-8589-11D1-B16A-00C0F0283628" id="MainTree" width="100%" height="290" style="font-family: times new roman; font-size: 16px; Visibility: visible">
<param name="Style" value="7">
<param name="_ExtentX" value="5292">
<param name="_ExtentY" value="10583">
<param name="_Version" value="393217">
<param name="HideSelection" value="0">
<param name="Indentation" value="767">
<param name="LabelEdit" value="0">
<param name="LineStyle" value="1">
<param name="PathSeparator" value="\">
<param name="Sorted" value="0">
<param name="Checkboxes" value="0">
<param name="FullRowSelect" value="0">
<param name="HotTracking" value="1">
<param name="Scroll" value="1">
<param name="SingleSel" value="0">
<param name="ImageList" value="ImgList">
<param name="BorderStyle" value="1">
<param name="Appearance" value="1">
<param name="MousePointer" value="0">
<param name="Enabled" value="1">
<param name="OLEDragMode" value="0">
<param name="OLEDropMode" value="0">
</object>
<object classid="CLSID:2C247F23-8591-11D1-B16A-00C0F0283628" id="ImgList" width="0" height="0" style="visibility: hidden"></object>
<IFrame id="PrtFrame" style="width: 0px; height: 0px">
</IFRAME>
</body>
После размещения этого объекта в теле веб-страницы вызов некоторого VBScript позволяет заполнить этот объект, используя что-то вроде следующего:
<script language="vbscript">
Sub SetupPage()
Call MainTree.Nodes.Clear
Call PopulateImageList
Call PopulateTree
End Sub
Sub PopulateTree()
Dim rs ' RecordSet
Dim i ' Index
Dim ndParent ' Parent Node
' Assign the main html form to a variable xfrm
Set xfrm = document.MainForm
' Setup a connection with the Database
Set AccessConn = CreateObject("ADODB.Connection")
AccessConn.open AccessConnectionString
strSQL = "SELECT..."
Set rs = AccessConn.Execute(strSQL)
' Manually set the parent nodes
i = 1
Set ndActive = MainTree.Nodes.Add(, 2, "IDC" & i, "Active", ImageIndex("active"))
' Move one forward, since the parent node was set manually
i = i + 1
Do While rs.EOF = False
' Add the detail to each parent node for each record returned...
rs.MoveNext
Loop
' etc...
End Sub
Sub PopulateImageList()
Dim lst
set lst = ImgList.ListImages.Add(1,"header",LoadPicture(DirectoryPath & "TreeImages\header.gif"))
set lst = ImgList.ListImages.Add(2,"hold",LoadPicture(DirectoryPath & "TreeImages\hold.gif"))
set lst = ImgList.ListImages.Add(3,"reviewed",LoadPicture(DirectoryPath & "TreeImages\reviewed.gif"))
set lst = ImgList.ListImages.Add(4,"completed",LoadPicture(DirectoryPath & "TreeImages\completed.gif"))
set lst = ImgList.ListImages.Add(5,"rejected",LoadPicture(DirectoryPath & "TreeImages\rejected.gif"))
set lst = ImgList.ListImages.Add(6,"printed",LoadPicture(DirectoryPath & "TreeImages\printer.gif"))
set lst = ImgList.ListImages.Add(7,"active",LoadPicture(DirectoryPath & "TreeImages\active.gif"))
set lst = ImgList.ListImages.Add(8,"archived",LoadPicture(DirectoryPath & "TreeImages\archived.gif"))
set lst = ImgList.ListImages.Add(9,"emailed",LoadPicture(DirectoryPath & "TreeImages\emailed.gif"))
set lst = ImgList.ListImages.Add(10,"assigned",LoadPicture(DirectoryPath & "TreeImages\assigned.gif"))
End Sub
</script>
Как только данные доступны в исходной базе данных, все, что нужно сделать пользователю, это открыть локальный файл в общей сети, и он увидит что-то вроде следующего:
Будем весьма благодарны за любые идеи или методы для достижения этой цели.