【问题标题】:'DDL1' has a SelectedValue which is invalid because it does not exist in the list of items“DDL1”有一个无效的 SelectedValue,因为它不存在于项目列表中
【发布时间】:2013-10-10 19:06:26
【问题描述】:

晚上好,

我在尝试使用下拉列表更新网格视图时遇到了上述错误。 但是,这仅取决于我如何安排数据集。

下面的 SQL 给了我一个错误:

    "SELECT top 1 M.Title, H.* FROM MASTER AS M
    RIGHT JOIN History AS H
    ON M.TITLE = H.TITLE
    WHERE [Type] < '3'
    order by h.upd_date_time desc"

但是,如果我从脚本中删除“desc”,则网页将正常工作。 作为参考,我将以下脚本用于 DDL:

            <asp:TemplateField HeaderText="Edge 1" SortExpression="Edge1">
            <EditItemTemplate>
            <asp:DropDownList 
             ID="DDL1" runat="server" DataSourceID="OKNGSelect" DataTextField="col1" 
             DataValueField="col1" SelectedValue='<%# Bind("Edge1") %>' AppendDataBoundItems="true">
             <asp:ListItem Text="Select" Value="" />
            </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Edge1") %>'></asp:Label>
            </ItemTemplate>
            <ItemStyle Wrap="False" />
        </asp:TemplateField>

有没有办法在 SQL 端解决这个问题,因为我需要从我的历史记录表中单独显示最新的记录?我已经尝试从 asp 页面修复它,但是在网络上进行了一些广泛的研究之后,这似乎是一个不常见但非常难以处理的错误。

谢谢。

【问题讨论】:

  • 您能否发布一些记录,以便我们了解数据失败的原因?
  • 抱歉,我早早发帖了。下拉列表将值从设置表传递到主/历史表,设置表使用的值以及它用于查找值的数据集如下。 Blade 1 Die 2 NG 4 OK 3
  • 您刚刚发布了数据源...您可以发布一些带有标题的 SQL 记录吗?

标签: asp.net sql vb.net


【解决方案1】:

按 DESC 顺序运行查询并查看 Edge1 列。所有这些值是否与填充DropDownList 的查询中的值匹配?我怀疑不是,我想为什么在排序 ASC 时没有得到异常的原因是第一个值与 DropDownList 中的值匹配。尝试此查询以查看设置表中是否存在 Edge1 不存在的行:

SELECT M.Title, H.* 
    FROM MASTER AS M RIGHT JOIN History AS H
        ON M.TITLE = H.TITLE
    WHERE [Type] < '3'
        AND Edge1 NOT IN (SELECT col1 FROM Settings WHERE (col2 = 3) OR (col2 = 4))

我应该指出,在您的DropDownList 中有DataValueField="col1"。由于您在查询中同时拉取 col1 和 col2,您的意思是它是 col2 吗?

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多