傍晚,
尝试使用下拉列表更新gridview时,我遇到了上述错误。 但是,这只取决于我如何安排数据集。
以下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页面修复它,但经过对网络的一些广泛研究后,这似乎是一个不常见但非常难以处理的错误。
感谢。
答案 0 :(得分:0)
以DESC顺序运行查询并查看Edge1
列。所有这些值是否与填充DropDownList
的查询中的值相匹配?我怀疑没有,并且我想象为什么在排序ASC时没有得到您的异常,因为第一个值DOES与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吗?