【问题标题】:DropDownList.SelectedIndex sets to 1DropDownList.SelectedIndex 设置为 1
【发布时间】:2021-09-16 09:36:59
【问题描述】:

"DropDownList.SelectedIndex = -1" problem

我使用上述解决方案来设置我的 DropDownlist,它按预期工作。但我注意到 一个间歇性错误,在使用以下代码在索引 0 处插入项目之后
myDropDownList.Items.Insert(0, new ListItem("Please select", ""));
myDropDownList.SelectedIndex 设置为 1

【问题讨论】:

  • 如果数据集 ALSO 有一个空白行,就会出现这个问题。因此,您正在添加一行,并且存在一个空白行。因此,它通常会为索引选择 0 或 1。如果你阻止数据库/数据集在数据中有一个空白行,那么你应该总是得到 0。如果你有一个空白行并且你添加了空白行?然后你会得到 1 或经常会。

标签: c# asp.net .net


【解决方案1】:

你把它放在 Page_Load 上了吗?或者也许你有更多的信息?这里是 VB.NET 的小代码示例,但你应该明白。

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Me.IsPostBack Then

        MyDropDownList.SelectedIndex = -1
        
    End If



End Sub

***编辑 这就是我在项目中的做法。(我从这里的数据库中填写下拉列表。)

 Private Sub Fill_DropDown()
    dsItems= SqlHelper.ReadOnlyDataset("SELECT Item FROM Items ORDER BY ID")
    
    ws_Items.Items.Add("Choose Item...")

    For Each row As DataRow In dsItems.Tables(0).Rows
        ws_Items.Items.Add(row("Items"))
    Next

    ws_Items.SelectedIndex = 0
End Sub

然后在负载上我这样做

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then

      Call Fill_DropDown()

    End If


End Sub

【讨论】:

  • 是的,在PageLoad里面if条件if (!IsPostBack){}
  • 好吧,你可以使用数据绑定 - 真的不需要循环。但如前所述,如果数据集有一个空白行,并且您添加了一个空白行,那么您的索引会被下推一个,并且您得到一个值 1 - 所以请确保数据集没有该空白行(或者如果它确实/将会,然后不要像你一样添加第二个空白行)。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 2012-10-30
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多