Search code examples
vb.netdetailsview

Adding Items To DetailView DropDownlist in Insert ITem Template


I have Detail In Which I USed as Dropdownlist to INsert Item Template and I Am trying to add items to Dropdown using vb.net code using for loop bu when THe Page Runs it adds the values Five times because total rows in detail view are five Please any one hrlp me to get out of from this Here is My Code

If Me.IsPostBack Then



            If Page.User.Identity.Name = "gate" Then
                For Each DetVW As DetailsViewRow In DetailsView1.Rows
                    Dim ddltype As DropDownList = CType(DetVW.FindControl("DDLTYPE"), DropDownList)

                    ddltype.Items.Add(New ListItem("", ""))
                    ddltype.Items.Add(New ListItem("Sugar Loading", "SL"))
                    ddltype.Items.Add(New ListItem("Molasses Unloading", "MU"))
                    ddltype.Items.Add(New ListItem("General Vehicle", "GV"))
                    ddltype.Items.Add(New ListItem("Ethanol Loading", "EL"))
                    ddltype.Items.Add(New ListItem("Bagasses Unloading", "BU"))
                    Label4.Text = "01"

                Next
            ElseIf Page.User.Identity.Name = "bhone" Then

                For Each DetVW As DetailsViewRow In DetailsView1.Rows
                    Dim ddltype As DropDownList = CType(DetVW.FindControl("DDLTYPE"), DropDownList)

                    ddltype.Items.Add(New ListItem("", ""))
                    ddltype.Items.Add(New ListItem("Sugar Loading", "SL"))
                    ddltype.Items.Add(New ListItem("Molasses Unloading", "MU"))
                    ddltype.Items.Add(New ListItem("General Vehicle", "GV"))
                    ddltype.Items.Add(New ListItem("Ethanol Loading", "EL"))
                    ddltype.Items.Add(New ListItem("Bagasses Unloading", "BU"))
                    Label4.Text = "02"
                Next
            ElseIf Page.User.Identity.Name = "ujl" Then
                For Each DetVW As DetailsViewRow In DetailsView1.Rows
                    Dim ddltype As DropDownList = CType(DetVW.FindControl("DDLTYPE"), DropDownList)

                    ddltype.Items.Add(New ListItem("", ""))
                    ddltype.Items.Add(New ListItem("Cotton Unloading", "CU"))
                    ddltype.Items.Add(New ListItem("Yarn Loading", "YL"))
                    Label4.Text = "03"
                Next
            End If
        End If

Solution

  • I don't believe that DetailsViewRow is a naming container so for each row, it going to locate the same drop-down list and thereby populating it five times.
    IMO, you don't need to iterate each row - simply work on details view. For example

    If Page.User.Identity.Name = "gate" Then
        Dim ddltype As DropDownList = CType(DetailsView1.FindControl("DDLTYPE"), DropDownList)
        ddltype.Items.Add(New ListItem("", ""))
        ddltype.Items.Add(New ListItem("Sugar Loading", "SL"))
        ddltype.Items.Add(New ListItem("Molasses Unloading", "MU"))
        ddltype.Items.Add(New ListItem("General Vehicle", "GV"))
        ddltype.Items.Add(New ListItem("Ethanol Loading", "EL"))
        ddltype.Items.Add(New ListItem("Bagasses Unloading", "BU"))
        Label4.Text = "01"
    ElseIf Page.User.Identity.Name = "bhone" Then
    ....
    

    Another way would be look at the RowState property to choose the row in insert mode. For example,

    If Page.User.Identity.Name = "gate" Then
       For Each DetVW As DetailsViewRow In DetailsView1.Rows
          If DetVW.RowState = DataControlRowState.Insert Then
            Dim ddltype As DropDownList = CType(DetailsView1.FindControl("DDLTYPE"), DropDownList)
            ddltype.Items.Add(New ListItem("", ""))
            ddltype.Items.Add(New ListItem("Sugar Loading", "SL"))
            ddltype.Items.Add(New ListItem("Molasses Unloading", "MU"))
            ddltype.Items.Add(New ListItem("General Vehicle", "GV"))
            ddltype.Items.Add(New ListItem("Ethanol Loading", "EL"))
            ddltype.Items.Add(New ListItem("Bagasses Unloading", "BU"))
            Label4.Text = "01"
            Exit For
          End If
       Next
    ElseIf Page.User.Identity.Name = "bhone" Then
    ....