Asp.net 每次回发dropdownlist项目重复后
我已将我的dropdownlist与数据库绑定。但每次回发时,dropdownlist中的项目都会再次重复 e、 g。 在页面加载时,我在dropdownlist 1,2,3,4中有此项。。等现在假设页面得到回发,那么它看起来像1,2,3,4,1,2,3,4 Vb代码Asp.net 每次回发dropdownlist项目重复后,asp.net,vb.net,databound,Asp.net,Vb.net,Databound,我已将我的dropdownlist与数据库绑定。但每次回发时,dropdownlist中的项目都会再次重复 e、 g。 在页面加载时,我在dropdownlist 1,2,3,4中有此项。。等现在假设页面得到回发,那么它看起来像1,2,3,4,1,2,3,4 Vb代码 Private Sub hospitals_Load(sender As Object, e As EventArgs) Handles Me.Load Me.PopulateAreas() End Sub Private S
Private Sub hospitals_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.PopulateAreas()
End Sub
Private Sub PopulateAreas()
If IsPostBack Then
Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
Using conn As New MySqlConnection()
conn.ConnectionString = ConfigurationManager _
.ConnectionStrings("conio").ConnectionString()
Using cmd As New MySqlCommand()
cmd.CommandText = "Select * from areas where areaCity Like '" + citySelector.SelectedItem.ToString + "%'"
cmd.Connection = conn
conn.Open()
Using sdr As MySqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Dim item As New ListItem()
item.Text = sdr("areaName").ToString()
item.Value = sdr("areaID").ToString()
'item.Selected = Convert.ToBoolean(sdr("IsSelected"))
areasList.Items.Add(item)
End While
End Using
conn.Close()
End Using
End Using
End If
更新
我有母版页,上面有城市的下拉列表。我正在使用母版页控件来编辑mycontent页面,如下所示
Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
现在在我的PopulateArea()类中有一个查询,其中WHERE子句具有cityselector。因此,根据城市的情况,我的区域被提取。这很简单。。每次回发任何内容时都会触发页面加载事件 用这个
Private Sub hospitals_Load(sender As Object, e As EventArgs) Handles Me.Load
If Page.IsPostBack Then
//do stuff when post back occurs
Else
Me.PopulateAreas() //put this function here so that it executes only once
End If
End Sub
这很简单。。每次回发任何内容时都会触发页面加载事件 用这个
Private Sub hospitals_Load(sender As Object, e As EventArgs) Handles Me.Load
If Page.IsPostBack Then
//do stuff when post back occurs
Else
Me.PopulateAreas() //put this function here so that it executes only once
End If
End Sub
在not postback事件中调用函数,这样就不会在postback事件中调用下拉列表(这会填充所有内容)
在not postback事件中调用函数,这样就不会在postback事件中调用下拉列表(这会填充所有内容)
如果您的下拉列表值必须在回发时更改。最初说出值,其中1,2,3,4和在回发时如果值必须为2,3,4,5,则根据您在表单控件上更改的某些值,必须先清除下拉列表值,然后向其中添加新值
areasList.Items.Clear()
还可以看到
AppendDataBoundItems
不是真的:在.aspx页面中如果回发时必须更改下拉列表值。最初说出值,其中1,2,3,4和在回发时如果值必须为2,3,4,5,则根据您在表单控件上更改的某些值,必须先清除下拉列表值,然后向其中添加新值
areasList.Items.Clear()
还可以看到AppendDataBoundItems
不正确:在.aspx页面中将代码更改为
Private Sub PopulateAreas()
If IsPostBack Then
areasList.Items.clear()
Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
Using conn As New MySqlConnection()
conn.ConnectionString = ConfigurationManager _
.ConnectionStrings("conio").ConnectionString()
Using cmd As New MySqlCommand()
cmd.CommandText = "Select * from areas where areaCity Like '" + citySelector.SelectedItem.ToString + "%'"
cmd.Connection = conn
conn.Open()
Using sdr As MySqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Dim item As New ListItem()
item.Text = sdr("areaName").ToString()
item.Value = sdr("areaID").ToString()
'item.Selected = Convert.ToBoolean(sdr("IsSelected"))
areasList.Items.Add(item)
End While
End Using
conn.Close()
End Using
End Using
End If
End Sub
将代码更改为
Private Sub PopulateAreas()
If IsPostBack Then
areasList.Items.clear()
Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
Using conn As New MySqlConnection()
conn.ConnectionString = ConfigurationManager _
.ConnectionStrings("conio").ConnectionString()
Using cmd As New MySqlCommand()
cmd.CommandText = "Select * from areas where areaCity Like '" + citySelector.SelectedItem.ToString + "%'"
cmd.Connection = conn
conn.Open()
Using sdr As MySqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Dim item As New ListItem()
item.Text = sdr("areaName").ToString()
item.Value = sdr("areaID").ToString()
'item.Selected = Convert.ToBoolean(sdr("IsSelected"))
areasList.Items.Add(item)
End While
End Using
conn.Close()
End Using
End Using
End If
End Sub
这是因为您已将代码放在回发子句中。把它放在Not Postback子句中。@yogihosting我有母版页,在母版页下我可以对所有城市进行下拉控制。现在我正在使用母版页控件创建我的内容页。如果我照你说的做,那么在这个地区什么也得不到回报。看到我的更新帖子我想现在你的下拉控件在母版页。因此,您必须在母版页本身的not postback子句中编写代码,因为此处的母版页控件(dropdownlist)不会在内容页中直接访问。您还可以通过使用F9键在Visual Studio中放置断点来检查它给出的错误。这是因为您已将代码放置在回发子句中。把它放在Not Postback子句中。@yogihosting我有母版页,在母版页下我可以对所有城市进行下拉控制。现在我正在使用母版页控件创建我的内容页。如果我照你说的做,那么在这个地区什么也得不到回报。看到我的更新帖子我想现在你的下拉控件在母版页。因此,您必须在母版页本身的not postback子句中编写代码,因为此处的母版页控件(dropdownlist)不会在内容页中直接访问。您还可以通过使用F9键在VisualStudio中放置断点来检查它给出的错误。