Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Convert LINQ query from Windows Form to Web UI

Posted on 2016-08-08
7
Medium Priority
?
81 Views
Last Modified: 2016-08-09
I use this type of query a lot in my Windows Forms applications.  Is there a comparable for a web application UI?  I can see the list being created.  I just can't get it to populate in the combobox.

Any help or direction is appreciated!
Karen


Dim getDept = From id In d.tblDepts _
                      Where id.RespOffice = CStr(Me.PMComboBox.SelectedItem) _
                      Group By dpt = id.Dept Into Group _
                      Order By dpt Ascending _
                      Select dpt

        RemoveHandler Me.cbDept.SelectedIndexChanged, AddressOf Me.cbDept_SelectedIndexChanged
        Me.cbDept.DataSource = getDept.AsQueryable
        Me.cbDept.SelectedIndex = -1
        AddHandler Me.cbDept.SelectedIndexChanged, AddressOf Me.cbDept_SelectedIndexChanged
0
Comment
Question by:Karen Wilson
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 36

Expert Comment

by:Miguel Oz
ID: 41747964
Linq query is the same for any.NET application.
Are you using web forms?
In which page event are you running the above code? Page_Load.
Please check the example in this link.
0
 

Author Comment

by:Karen Wilson
ID: 41747979
On page load I have this and I got it working with the databind().

 Dim getRspOff = (From id In d.tblDepts _
                        Group By ro = id.RespOffice Into Group _
                        Order By ro Ascending _
                        Select ro).ToList

        RemoveHandler Me.PMComboBox.SelectedIndexChanged, AddressOf Me.PMComboBox_SelectedIndexChanged
        Me.PMComboBox.DataSource = getRspOff
        Me.PMComboBox.DataBind()

        Me.PMComboBox.SelectedIndex = -1
        AddHandler Me.PMComboBox.SelectedIndexChanged, AddressOf Me.PMComboBox_SelectedIndexChanged

Next I want this code to run when I select an items from the PMCombobox.

Protected Sub PMComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles PMComboBox.SelectedIndexChanged

        Dim getDept = (From id In d.tblDepts _
                       Where id.RespOffice = PMComboBox.SelectedItem.Text _
                       Group By dpt = id.Dept Into Group _
                       Order By dpt Ascending _
                       Select dpt).ToList

        Me.cbDept.DataSource = getDept
        Me.cbDept.DataBind()

        If cbDept.Items.Count = 1 Then

            Dim getSec = From id In d.tblDepts _
                    Where id.RespOffice = PMComboBox.SelectedItem.Text _
                    And id.Dept = getDept.Item(0) _
                    Group By sec = id.Section Into Group _
                    Order By sec Ascending _
                    Select sec

            Me.cbSection.DataSource = getSec
            Me.cbSection.DataBind()
        End If

    End Sub

But it's not happening.
0
 
LVL 2

Expert Comment

by:JesNoFear
ID: 41748030
so, two things you should keep in mind, autopostback will be your friend. and for your page load, be sure to account for postback (if ispostback = false then)

Expanding on what you have above, if you are trying to change lables, text boxes, or other items on your selects. You will probably want to look into Update Panels. They are pretty handy for triggering updates to portions of the page without having to reload the page. I have been using them lately with lists when selection changes to change text fields and such.

so, here is a horrible example / explanation on update panels. it makes you make one, but didn't describe what it was doing very well in my opinion https://msdn.microsoft.com/en-us/library/bb399001.aspx

This one is explained more of what happens and why.
https://msdn.microsoft.com/en-us/library/bb386454.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 36

Accepted Solution

by:
Miguel Oz earned 2000 total points
ID: 41748302
this is a typical cascading dropdowns as shown in this example. (and it complements my previous link that states to use IsPostBack property)
From the example, your code should look like: (Notice that I did not add validation for clarity purposes - for production code must check whether there are contents  to display as per sample link)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
  If Not IsPostBack Then
	Dim getRspOff = (From id In d.tblDepts _
                         Group By ro = id.RespOffice Into Group _
                         Order By ro Ascending _
                         Select ro).ToList

         Me.PMComboBox.DataSource = getRspOff
         Me.PMComboBox.DataBind()
  End If
End Sub

Open in new window

Populating cbDept:
Protected Sub PMComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles PMComboBox.SelectedIndexChanged
    Dim getDept = (From id In d.tblDepts _
                   Where id.RespOffice = PMComboBox.SelectedItem.Text _
                   Group By dpt = id.Dept Into Group _
                   Order By dpt Ascending _
                   Select dpt).ToList

    Me.cbDept.DataSource = getDept
    Me.cbDept.DataBind()
End Sub

Open in new window

Populating cbSection:
Protected Sub DeptComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbDept.SelectedIndexChanged
     Dim getSec = From id In d.tblDepts _
             Where id.RespOffice = PMComboBox.SelectedItem.Text _
             And id.Dept = cbDept.SelectedItem.Text _
             Group By sec = id.Section Into Group _
             Order By sec Ascending _
             Select sec

     Me.cbSection.DataSource = getSec
     Me.cbSection.DataBind()
End Sub

Open in new window

0
 

Author Comment

by:Karen Wilson
ID: 41748639
That worked!!  I had fumbled around and made the PMComboBox a databound box and then the other dropboxes played well when I clicked the postback option.  But the initial dropbox was still a mystery.  Thanks so much for your help!
0
 
LVL 36

Expert Comment

by:Miguel Oz
ID: 41748678
No worries Karen- glad I can help you solve your issue, please assign the points and close the question.
Cheers from Sydney,
Miguel
0
 

Author Closing Comment

by:Karen Wilson
ID: 41748691
Sorry, thought I did that... thanks again.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question