【问题标题】:Dropdown.SelectedItem.Text isnt setting value properlyDropdown.Selected Item.Text 未正确设置值
【发布时间】:2015-12-15 07:22:29
【问题描述】:

我有以下下拉菜单

<asp:dropdownlist id="ddlCardStatus" runat="server" Width="150px">
  <asp:ListItem Value="E0" Text="Active" ></asp:ListItem>
  <asp:ListItem Value="E1" Text="Block"></asp:ListItem>
</asp:dropdownlist>

即使我在数据集中得到Block,我的下拉默认选定文本始终保持为Active

我想我设置错了 这是从数据集中收到的设置值的代码

ddlCardStatus.SelectedItem.Text = ddlCardStatus.Items.FindByValue(
     IIf(IsDBNull(ds.Tables(0).Rows(0).Item("Status")), 0, 
                 ds.Tables(0).Rows(0).Item("Status"))).Value

已编辑这是选择Status的存储过程部分

Select ID,case status when 'E0' then 'Active' when 'E1' then 'Block' end as 'Status' from temp

【问题讨论】:

  • 如果是 Text 则将 FindByValue( 替换为 FindByText(.

标签: asp.net vb.net selecteditem dropdown


【解决方案1】:

如果有的话,你应该直接设置值,而不是文本:-

ddlCardStatus.SelectedValue = ds.Tables(0).Rows(0).Item("Status").Value

您可以检查 Null,但将其设置为 0 没有意义,因为您的下拉列表中没有任何此类 ListItem。

更新:

由于您从 DB 传递文本,您可以在下拉集合中找到该文本并选择它:-

String cardStatus = ds.Tables(0).Rows(0).Item("Status")
ddlCardStatus.Items.FindByText(cardStatus).Selected = True

或者您可以从下拉集合中找到值并设置所选值:-

String cardStatus = ds.Tables(0).Rows(0).Item("Status")
ddlCardStatus.SelectedValue = ddItems.Items.FindByText(cardStatus).Value

【讨论】:

  • 但 Value 属性设置为 E0E1。我收到ActiveBlock 即文本,所以我使用了ddlCardStatus.SelectedItem.Text
  • 我收到ActiveBlock。我没有收到E0E1
  • 如何编写查询?
  • 数据从存储过程返回
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多