在下拉列表中处理重复值

时间:2018-06-05 20:49:03

标签: asp.net vb.net

在我的VB.net3.5应用程序中,我们显示了一个状态下拉列表 具有以下值

SELECT state, MAX(surname_cnt) AS surname_cnt
     , MAX(surname) KEEP ( DENSE_RANK FIRST ORDER BY surname_cnt DESC ) AS most_popular_surname
  FROM (
    SELECT state, INITCAP(surname) AS surname, COUNT(*) AS surname_cnt
      FROM mytable
     GROUP BY state, INITCAP(surname)
) GROUP BY state;

正如您所看到的,有一些重复的值,我必须处理。 当我选择任何DPO AA(或AE,AP)并且存在服务器端错误和页面回发时,状态下拉列表始终显示APO AA(或AE,AP)而不是DPO。 我知道它首先选择重复值。 我试图通过Text选择它的显示APO而不是DPO。 有没有更好的方法来处理下拉列表中的重复项。 当我检查时,在Chrome浏览器检查元素中它显示选择的正确元素(DPO AA)。但是在我检查SelectItem时,在第一行page_load事件的aspx.vb页面中设置为APO。 任何想法如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

嗯,您仅限于HTTP协议功能。

GET 请求会针对这些项目返回<option selected="selected>。因此,您可以在生成它时看到它

对您的应用程序的

POST 请求只会获得$ $ Hierarchy $ $ mailingState = AA,并且无法区分APO / DPO。无论用户选择了什么文字。因此.NET为您挑选第一个机器人。 SelectedIndex不会被HTTP转移。

解决方案A 使用一些唯一值。喜欢&#34; AA-APO AA&#34;加入当前的关键和价值。或者来自数据库的一些ID。

解决方案B 您必须自己将所选索引发布给您。这意味着添加一些javascript到你的DDL的onchange事件,以将selectedIndex存储到该隐藏字段。然后工作并重新设置DDL.SelectedIndex。