0

在更新表字段的下拉列表中引发错误。它声称 SelectedValue 无效,因为它不存在于项目列表中。如果我进入表格并将零添加到 ID,则不再抛出错误。

下拉菜单选择一个teacherid,它是Teacher 表中的主键,并将ID 保存到Classes 表中。类表保存任何以零开头但没有前导零的 ID。

因此,如果 Classes 表中的 tid 为 0701234,则将其保存为 701234,但两个表都是 nvarchar(255)。我可能会补充一点,Classes 表对 tid 使用了 int 数据类型。所以我改变了它以避免这种情况。更改后仍然会引发上述错误,因为您无法更新不存在的记录。

这是控制

<asp:DropDownList ID="teacherdd1" runat="server" AutoPostBack="true" 
    DataSourceID="SQLdatasourceTeacherList"
    DataTextField="fullname1" DataValueField="tid" >
</asp:DropDownList>

我根本不知道该怎么做,或者为什么会这样。

非常简单。我切换到文本框进行测试并忘记仔细检查。我的疏忽。

谢谢

cmdUpdate.Parameters.Add("@TID1", SqlDbType.Int).Value = teacherdd1.SelectedValue.ToString() cmdUpdate.Parameters.Add("@TID2", SqlDbType.Int).Value = teacherdd2.SelectedValue.ToString() 'cmdUpdate.Parameters.Add("@tid1", SqlDbType.NVarChar).Value = txbteacher1.Text.ToString() 'cmdUpdate.Parameters.Add("@tid2", SqlDbType.NVarChar).Value = txbteacher2.Text.ToString ()

4

1 回答 1

0

正如 MRAB 已经说过的,您需要在代码中跟踪这些数据,以确保它始终被视为字符串。您提到类表中的字段曾经是一个 int,这表明代码中也可能使用了 int 变量(例如 SQL 命令的参数?)。

因此,只需使用调试器单步执行或仅跟踪代码即可跟踪数据。使用调试器可以让您检查数据是否仍然包含前导零,这样就不会发生任何意外。

如果上述方法没有帮助,那么您将不得不在问题中提供更多代码,以便其他人可能会发现发生了什么。

于 2012-08-07T10:59:23.967 回答