Imports System.Data
Imports System.Data.SqlClient

Partial Class DropDownSearch_Buyer
    Inherits System.Web.UI.UserControl
    Shared val As String
    Shared val1 As String
    Shared val2 As String
    Shared val3 As String
    Shared flag As Boolean
    Shared flag1 As Boolean
    Dim ans As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            loadcategory()
            If Session("HLabel") <> Nothing Then
                lblHead.Text = Session("HLabel").ToString()
            Else
                Session("backcatid") = Nothing
                lblHead.Visible = False
                Session("HLabel") = ""
            End If
            Session("HLabel") = Nothing
        End If
    End Sub
    Private Sub loadcategory()
        Try
            flag1 = False
            ddl1.Items.Clear()
            Dim Str As String
            Str = "select Category_Kid,Category_Name from Category_Master where Category_ParentId='Root Category' and Category_IsDeleted='0' order by category_name asc"
            ans = searchFill_Combo(Str, ddl1)
            If ans = "fill" Then

                Session("backcatid") = Nothing
            Else
            End If

        Catch ex As Exception
            ex.Message.ToString()
        End Try
    End Sub


    Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl1.SelectedIndexChanged
        lblHead.Visible = True
        If ddl1.SelectedIndex > 0 Then

            val1 = ""
            val1 = ddl1.SelectedItem.Text.ToString.Trim & " -"
            val = ddl1.SelectedItem.Text.ToString.Trim
            ddl2.Items.Clear()
            ddl3.Items.Clear()
            fillsubgrid(ddl1.SelectedValue.ToString.Trim)
            If flag1 = False Then
                lblHead.Text = ""
                lblHead.Text = val1
                'Label1.Visible = False
                val1 = lblHead.Text
                Session("HLabel") = lblHead.Text
            Else
                If flag Then

                    lblHead.Text = val3 & val2 & "  -"
                    val2 = lblHead.Text
                    val1 = val3
                    ddl3.Items.Clear()
                Else

                    ' val1 = ddl3.SelectedItem.Text & " -" & ddl1.SelectedItem.Text
                    lblHead.Text = Session("HLabel") & val1
                    val2 = lblHead.Text

                End If
            End If
        End If
    End Sub



    Protected Sub ddl2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl2.SelectedIndexChanged
        lblHead.Visible = True
        If ddl2.SelectedIndex > 0 Then

            fillsubgrid1(ddl2.SelectedValue.ToString.Trim)
            val2 = ddl2.SelectedItem.Text.ToString.Trim

            Dim intID As String = ddl2.SelectedValue
            'find2_category(intID)
            find_category(intID, ddl1)
            If flag Then
                lblHead.Text = ddl1.SelectedItem.Text & " -" & val2 & " -"
                val2 = lblHead.Text
                val1 = val3
                'ddl3.Items.Clear()
            Else

                lblHead.Text = lblHead.Text & val2 & " -"
                val2 = lblHead.Text

            End If
            Session("HLabel") = lblHead.Text

            flag = False
            'Session("backcatid") = Nothing
        End If
    End Sub

    Protected Sub ddl3_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl3.SelectedIndexChanged
        lblHead.Visible = True

        If ddl3.SelectedIndex > 0 Then
            Dim intID As String = ddl3.SelectedValue
            val = ddl3.SelectedItem.Text
            find_category(intID, ddl2)
            fillsubgrid(ddl3.SelectedValue.ToString.Trim)
            val3 = ddl3.SelectedItem.Text.ToString.Trim



            lblHead.Text = lblHead.Text & val3 & " -"

            val3 = lblHead.Text
            Session("HLabel") = lblHead.Text
            'Session("backcatid") = Nothing

        End If
    End Sub

    Private Sub find2_category(ByVal intId As String)
        Dim strsql As String
        strsql = "SELECT Category_Kid as id, Category_Name as Name FROM Category_Master WHERE Category_ParentId = '" & intId & "' ORDER BY Category_Name"

        Dim sqlcon As New SqlConnection
        sqlcon = New SqlConnection(ConfigurationManager.AppSettings("ConnectionString"))  ' Declare connection Object
        Dim SqlAdapter As New SqlDataAdapter      ' Declare Dataadapter Object
        Dim SqlDataSet As New Data.DataSet        ' Declare Dataset Object
        Dim sqlCmd As New SqlCommand(strsql, sqlcon) ' Declare Command Object


        sqlcon.Open()                                 ' Open Connection
        Dim dr As SqlDataReader
        dr = sqlCmd.ExecuteReader

        If dr.Read Then
        Else
            ddl3.Items.Clear()

        End If

        sqlcon.Close()                                '' Close Connection Object
        sqlcon.Dispose()                              '' Dispose Connection Oblect
        sqlCmd.Dispose()                              '' Dispose command object
        SqlAdapter.Dispose()                          '' Dispose adapter Object
        SqlDataSet.Dispose()                          '' Dispose dataset Object


    End Sub
    Public Sub fillsubgrid(ByVal catid As String)
        Dim con1 As New SqlConnection
        con1.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("ConnectionString")
        Dim Strr As String
        Strr = "select Category_Kid,Category_Name  from Category_Master where Category_ParentId ='" & catid & "' and Category_IsDeleted='0' "
        If con1.State = Data.ConnectionState.Open Then
            con1.Close()
        End If
        con1.Open()
        Dim cmd1 As New SqlCommand(Strr, con1)
        Dim dr1 As SqlDataReader = cmd1.ExecuteReader

        If flag = True Then

            Fill_Combo(Strr, ddl1)
            flag1 = True

        Else
            If dr1.HasRows = True Then
                Fill_Combo(Strr, ddl2)

            Else
                Session("HLabel") = lblHead.Text & val & " -"
                If Session("ID") = "Buyer" Then

                    Response.Redirect("~/Buyer/newBuyerProductSearch.aspx?Prod_Kid=" & catid)
                Else

                    Response.Redirect("SearchProduct.aspx?Prod_Kid=" & catid)
                End If
            End If
        End If
        flag = False
        con1.Close()
    End Sub
    Public Sub fillsubgrid1(ByVal catid As String)
        Dim Strr As String
        Strr = "select Category_Kid,Category_Name  from Category_Master where Category_ParentId ='" & catid & "'and Category_IsDeleted='0'"
        ans = searchFill_Combo(Strr, ddl3)
        val = ddl2.SelectedItem.Text & " -"
        If ans = "fill" Then

        Else
            Session("HLabel") = lblHead.Text & val
            If Session("ID") = "Buyer" Then

                Response.Redirect("~/Buyer/newBuyerProductSearch.aspx?Prod_Kid=" & catid)
            Else

                Response.Redirect("SearchProduct.aspx?Prod_Kid=" & catid)
            End If
            'Response.Redirect("SearchProduct.aspx?Prod_Kid=" & catid)
        End If

    End Sub
    Private Sub find_category(ByVal intId As String, ByRef ddl As DropDownList)
        Dim strsql As String

        strsql = "SELECT Category_Kid as id, Category_Name as Name FROM Category_Master WHERE Category_ParentId = '" & intId & "' and Category_IsDeleted='0' ORDER BY Category_Name"


        Dim SqlCon As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString"))  ' Declare connection Object
        Dim SqlAdapter As New SqlDataAdapter      ' Declare Dataadapter Object
        Dim SqlDataSet As New Data.DataSet        ' Declare Dataset Object
        Dim sqlCmd As New SqlCommand(strsql, SqlCon) ' Declare Command Object
        Dim i As Integer

        SqlCon.Open()                                 ' Open Connection
        Dim dr As SqlDataReader
        dr = sqlCmd.ExecuteReader

        'Dim f As Boolean
        If dr.Read Then
            flag = True
            loadcategory()
            SqlCon.Close()
            SqlCon.Open()
            strsql = "select Category_ParentID from Category_Master where Category_Kid ='" & ddl2.SelectedValue & "' and Category_IsDeleted='0' "
            sqlCmd = New SqlCommand(strsql, SqlCon) ' Declare Command Object

            dr = sqlCmd.ExecuteReader
            If dr.Read Then


                ddl1.SelectedIndex = ddl1.Items.IndexOf(ddl1.Items.FindByValue(dr("Category_ParentID")))
            End If

            '    
        Else
            flag = False
        End If
    End Sub


    Function searchFill_Combo(ByVal strQuery As String, ByVal ddl As DropDownList) As String
        Try
            Dim SqlCon As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString"))  ' Declare connection Object
            Dim SqlAdapter As New SqlDataAdapter      ' Declare Dataadapter Object
            Dim SqlDataSet As New Data.DataSet        ' Declare Dataset Object
            Dim DT As New Data.DataTable              ' Declare Datatable Oblect

            Dim sqlCmd As New SqlCommand(strQuery, SqlCon) ' Declare Command Object
            Dim i As Integer

            SqlCon.Open()                                 ' Open Connection
            SqlAdapter.SelectCommand = sqlCmd             ' Set command to Adapter
            SqlAdapter.Fill(SqlDataSet, "TableName")      ' Links Adapter with DataSet
            DT = SqlDataSet.Tables("TableName")           ' Get datatable from dataset
            sqlCmd.ExecuteNonQuery()                      ' Executes Command
            If SqlDataSet.Tables(0).Rows.Count > 0 Then


                ddl.Items.Clear()                             ' Clear the Items of DropDownList  
                ddl.Items.Insert(0, New ListItem("Select", "Select"))     ' Insert Blank Row at index 0  

                For i = 0 To DT.Rows.Count - 1
                    ddl.Items.Insert(i + 1, New ListItem(DT.Rows(i).Item(1), DT.Rows(i).Item(0)))  '' Add Items(code,Exact Value) into DropDownList
                Next i
                ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue(""))     '' Assigning 0 th Index to DropDownList


                SqlCon.Close()                                '' Close Connection Object
                SqlCon.Dispose()                              '' Dispose Connection Oblect
                sqlCmd.Dispose()                              '' Dispose command object
                SqlAdapter.Dispose()                          '' Dispose adapter Object
                SqlDataSet.Dispose()                          '' Dispose dataset Object
                DT.Dispose()                                  '' Dispose datatable Object
                Return "fill"
            Else
                Return "notfill"
            End If
        Catch ex As Exception
            CreateMessageAlert(ddl.Page, ex.Message, "StrKeyVal")     'Display the Error Message
            ddl = Nothing
        End Try

    End Function
End Class
