PDA

Click to See Complete Forum and Search --> : Help with dropdown listbox using Web Custom Controls


indydavid32
Dec 1st, 2003, 10:50 AM
I want to create a web custom control that uses a dropdown list box.

Once I have it created, I know how to use it. My problem is creating it.

I created a new Web Control Library project called MclProgramBox. I renamed the control to cmbPrograms.vb

Is this the right start at least?

I want data loaded into this combo box based on customer login information. For instance, this is the code that I have been using in all my web pages for this dropdown box.

Dim strPriveledge As String
Try
If (Request.Cookies("Priveledge") Is Nothing) Or Request.Cookies("Priveledge").Value = String.Empty Then
Response.Redirect("Login.aspx")
End If
Catch
Response.Redirect("Login.aspx")
End Try

strPriveledge = Request.Cookies("Priveledge").Value

If strPriveledge = "Administrator" Then
cmbPrograms.ClearSelection()
cmbPrograms.Items.Add("--Select Program--")
cmbPrograms.Items.Add("Menu")
cmbPrograms.Items.Add("PDI Sales")
cmbPrograms.Items.Add("Price Check")
'cmbPrograms.Items.Add("RMS Compare")
End If
If strPriveledge = "Executive" Then
cmbPrograms.ClearSelection()
cmbPrograms.Items.Add("--Select Program--")
cmbPrograms.Items.Add("Menu")
cmbPrograms.Items.Add("PDI Sales")
cmbPrograms.Items.Add("Price Check")
'cmbPrograms.Items.Add("RMS Compare")
End If
If strPriveledge = "District Manager" Then
cmbPrograms.ClearSelection()
cmbPrograms.Items.Add("--Select Program--")
cmbPrograms.Items.Add("Menu")
cmbPrograms.Items.Add("PDI Sales")
End If
If strPriveledge <> "Administrator" And strPriveledge <> "Executive" _
And strPriveledge <> "District Manager" Then
Response.Redirect("Login.aspx")
End If


For the SelectedIndexChanged event, I want this to happen.

If cmbPrograms.SelectedItem.Text = "Menu" Then
Response.Redirect("Menu.aspx")
End If
If cmbPrograms.SelectedItem.Text = "PDI Sales" Then
Response.Redirect("PDISales.aspx")
End If
If cmbPrograms.SelectedItem.Text = "Price Check" Then
Response.Redirect("PriceCheck.aspx")
End If
If cmbPrograms.SelectedItem.Text = "RMS Compare" Then
Response.Redirect("RMSCompare.aspx")
End If


I have no idea how to do this for a web custom control. Anyone with patience, I would appreciate if you could be as detailed as possible if you want to give me a hand.

Thanks!

pvb
Dec 1st, 2003, 07:54 PM
There are quite a few different ways to do this, here's one:
ProgramsDropDownList.vb:
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class ProgramsDropDownList : Inherits DropDownList
Private _privilege As String
Public ReadOnly Property Privilege() As String
Get
Return _privilege
End Get
End Property
Public ReadOnly Property Program() As String
Get
Dim li As ListItem = Me.SelectedItem
If Not li Is Nothing Then
Return li.Value
End If
End Get
End Property
Public ReadOnly Property RedirectUrl() As String
Get
Select Case Me.Program
Case "Menu"
Return "Menu.aspx"
Case "PDI Sales"
Return "PDISales.aspx"
Case "Price Check"
Return "PriceCheck.aspx"
Case "RMS Compare"
Return "RMSCompare.aspx"
Case Else
Return ""
End Select
End Get
End Property
Public Overloads Sub DataBind(ByVal privilege As Object)
If Not privilege Is Nothing AndAlso privilege.ToString() <> "" Then
Me._privilege = privilege.ToString()
Me.ClearSelection()
Me.Items.Add(New ListItem("- Select Program -"))
Me.Items.Add(New ListItem("Menu"))
Me.Items.Add(New ListItem("PDI Sales"))
If Me._privilege = "Administrator" Or Me._privilege = "Executive" Then
Me.Items.Add(New ListItem("Price Check"))
Me.Items.Add(New ListItem("RMS Compare"))
End If
End If
End Sub
End Class

and the aspx page ProgramsDropDownListTest.aspx:
<%@ Register TagPrefix="pvb" Assembly="DeathAngel" Namespace="DeathAngel" %>
<script language="vb" runat="server">
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
If Not Page.IsPostBack Then
ddlPrograms.DataBind(Request.QueryString("privilege"))
If ddlPrograms.Program = "" Then
Response.Redirect ("http://www.microsoft.com")
End If
End If
End Sub
Protected Sub ddlPrograms_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
If ddlPrograms.RedirectUrl <> "" Then
Response.Redirect(ddlPrograms.RedirectUrl)
End If
End Sub
</script>
<html>
<body>
<form runat="server">
<pvb:ProgramsDropDownList ID="ddlPrograms" Runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlPrograms_SelectedIndexChanged"/>
</form>
</body>
</html>