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
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
....