不将前导零从一个表保存到另一个表

时间:2012-08-06 19:37:49

标签: asp.net

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

下拉列表选择一个teacherid,它是Teacher表中的主键,并将ID保存到Classes表中。 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()

1 个答案:

答案 0 :(得分:0)

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

所以只需按照数据,通过逐步调试,或者只需遵循代码即可。使用调试器可以检查数据是否仍然包含前导零,以便不会发生任何意外情况。

如果上述方法无效,那么您必须在问题中提供更多代码,以便其他人可以发现正在发生的事情。