Перетаскивание в VB / ASP с использованием элементов управления, созданных во время выполнения - PullRequest
0 голосов
/ 18 мая 2009

Это моя первая публикация в Stackoverflow, но я уже несколько месяцев читаю много вопросов и ответов! Теперь я застрял и мне отчаянно нужна помощь.

Справочная информация: Сайт расположен по адресу http://www.mobiuspc.com, и рассматриваемый раздел является кнопкой «конфигуратор» в моей верхней строке навигации.
Все написано в последней версии VB.NET и ASP 3.5, и у меня есть сервер SQL2005, доступный на моем хосте.

Вот в чем суть моей дилеммы:
Во время загрузки страницы я получаю список всех деталей в моей таблице деталей. Затем я создаю объект изображения и 2 объекта надписей на каждую запись и помещаю их в свой элемент управления панели аккордеона. Пока отлично работает, я могу получить огромный список картинок и текста, которые выровнены так, как мне нравится (пока). Теперь - мне действительно нужен способ, позволяющий посетителю перетаскивать комбо изображения / метки / метки с аккордеона на панель (или что-нибудь еще) с правой стороны, которая в настоящее время невидима. Как только перетаскиваемая вещь будет помещена в цель перетаскивания, я бы хотел, чтобы она запустила функцию или сабвуфер, которые я пишу в VB.

Из того, что я видел в jquery, очевидно, есть способ сделать элемент на моей веб-странице перетаскиваемым, сбрасываемым или чем-то еще. Пример кода для этого - я не совсем понимаю, так что пример с быстрым было бы здорово. Я быстро учусь и могу применить его в своем проекте. Что еще более важно, как я могу сделать объекты, созданные во время выполнения, перетаскиваемыми и запустить мое событие, которое я написал, на единственном языке, который я знаю?

Вот как я генерирую свои объекты времени выполнения как есть:

Public Function loadallimages()
    Dim brandholder As ArrayList = New ArrayList
    Dim partnumberholder As ArrayList = New ArrayList
    Dim modelholder As ArrayList = New ArrayList
    Dim imageinsert As Image
    Dim labelinsert1 As Label
    Dim labelinsert2 As Label
    Dim gridinsert As Table
    Dim gridrow1 As TableRow
    Dim gridrow2 As TableRow
    Dim gridrow3 As TableRow
    Dim gridcell1 As TableCell
    Dim gridcell2 As TableCell
    Dim gridcell3 As TableCell
    Dim switcher As Integer = 0

    conn.ConnectionString = connstring 'I got my fancy connection string stored elsewhere
    conn.Open()

    'Add all images to the chassis section
    inserter = "SELECT Brand,PartNumber,Model FROM Chassis" 'this is the command I'm sending to the SQL command
    sqlmagicmaker = New SqlCommand(inserter, conn) 'this is the actual sql command object, created in my declarations
    bloater = fucker.ExecuteReader 'bloater is my easy way of remembering "data reader object"
    Do While bloater.Read
        brandholder.Add(bloater.Item("Brand").ToString)
        partnumberholder.Add(bloater.Item("PartNumber").ToString)
        modelholder.Add(bloater.Item("Model").ToString)
    Loop
    bloater.Close() 'can't forget to close it!



    For i = 0 To brandholder.Count - 1
        imageinsert = New Image 'make new objects and give them ID's later
        labelinsert1 = New Label
        labelinsert2 = New Label
        If switcher = 0 Then 'this is my ghetto way of getting 3 "chunks" of data in a row
            gridinsert = New Table
            gridrow1 = New TableRow
            gridrow2 = New TableRow
            gridrow3 = New TableRow
        End If
        gridcell1 = New TableCell
        gridcell2 = New TableCell
        gridcell3 = New TableCell
        gridcell1.CssClass = "configgridcell" 'just sets the width so it looks nice
        gridcell2.CssClass = "configgridcell"
        gridcell3.CssClass = "configgridcell"

        imageinsert.ImageUrl = ".\Images\Chassis\" + brandholder(i) + "{}" + partnumberholder(i) + ".jpg"
        imageinsert.ID = brandholder(i) + "{}" + partnumberholder(i)
        labelinsert1.Text = brandholder(i)
        labelinsert2.Text = modelholder(i)
        imageinsert.AlternateText = "No Image"

        gridrow1.Cells.Add(gridcell1) 'create a table and add controls
        gridrow1.Cells(switcher).Controls.Add(imageinsert)
        gridrow2.Cells.Add(gridcell2)
        gridrow2.Cells(switcher).Controls.Add(labelinsert1)
        gridrow3.Cells.Add(gridcell3)
        gridrow3.Cells(switcher).Controls.Add(labelinsert2)
        If switcher = 2 Then
            gridinsert.Rows.Add(gridrow1) 'compile all the rows and put into a table
            gridinsert.Rows.Add(gridrow2)
            gridinsert.Rows.Add(gridrow3)
            AccordionPane1.ContentContainer.Controls.Add(gridinsert) 'dump the table in the appropriate accordion pane
        End If
        switcher = switcher + 1
        If switcher = 3 Then switcher = 0 'do it all over again

    Next
    brandholder.Clear()
    partnumberholder.Clear()
    modelholder.Clear()
    switcher = 0
    'then we go onto other sections, which basically do the exact same thing to other accordions

Затем страница загружается со всеми моими трио объектов изображения / метки / метки. Много их. Производительность не является проблемой в данный момент, я просто хочу, чтобы моя идея работала. Идея снова заключается в том, что как только я каким-то образом волшебным образом «перетаскиваю» один из моих созданных объектов в зону сброса, затем отпускаю мышь, чтобы заставить его на самом деле упасть, что-то подобное будет выполнено (псевдокод):

Public Function fire_the_great_event()
  x = the id of the element that just got dropped
  'do work here
  'take that element id, figure out what it is, and ask the database for more help
  'depending on what the database says, start deleting un-needed image/label/label's
End Function

Помощь любого рода будет принята с благодарностью! Если это вообще возможно, я хочу свести к минимуму свое взаимодействие с не-VB / ASP. Если бы я мог как-то просто наложить магическое свойство на объект из моего окна кодирования VB, это было бы лучше.

Спасибо! Билл

1 Ответ

0 голосов
/ 21 мая 2009

Я понял это! Все, что мне нужно было сделать, это убедиться, что cssclass можно перетаскивать через javascript с использованием Jquery. Примените .draggable к классу и убедитесь, что этот бит js находится на странице, а не на странице. Также выяснилось, что мой метод создания элементов управления в табличном формате, похоже, не работает, я должен был поместить панель контейнера, где я хотел элементы управления, а затем добавить их по отдельности на панель. Отлично работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...