【问题标题】:Input string was not in a correct format vb.net/asp.net输入字符串的格式不正确 vb.net/asp.net
【发布时间】:2014-06-18 00:05:30
【问题描述】:

这是我的表单视图..

<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="recid">
<EditItemTemplate>
RECID:
<asp:TextBox ID="recid" runat="server" Text='<%# Eval("RECID") %>' ReadOnly="true" />
<br />
SHIPPER:
<asp:TextBox ID="shipper" runat="server" Text='<%# Bind("SHIPPER") %>' />
<br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
&nbsp;
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
</asp:FormView>

这是我的 sqldatasource1

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM IMPORT WHERE (RECID = ?)"
UpdateCommand="UPDATE IMPORT SET SHIPPER=@shipper WHERE RECID=@recid" >
<SelectParameters>
<asp:ControlParameter ControlID="Label1" Name="RECID" PropertyName="Text" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="recid" Type="Int32" />
<asp:Parameter Name="shipper" Type="String" />
</UpdateParameters>
</asp:SqlDataSource> 

现在,我的问题是每次更新页面时,都会出现错误输入字符串格式不正确。

我尝试将 UpdateCommand 中的 @recid 更改为常量 UpdateCommand="UPDATE IMPORT SET SHIPPER=@shipper WHERE RECID=11186" 效果很好,更新成功。

我认为 @recid 在 UpdateCommand 中被视为字符串。有人可以帮帮我吗?我需要做什么才能将@recid 的数据类型更改为整数?

谢谢!

【问题讨论】:

  • 数据库中RECID的数据类型是什么?
  • 嗨! RECID是整数,在数据库中自增,是主键。

标签: asp.net vb.net


【解决方案1】:

您需要解决的第一件事是将raceid 与如下文本框绑定:

<asp:TextBox ID="recid" runat="server" Text='<%# Bind("RECID") %>' ReadOnly="true" />

现在有一个关于提供者的问题。在选择命令中,您使用了RACEID = ?? 用于OleDbOdbc。如果您使用其中任何一个,则必须将更新命令更改为:

UpdateCommand="UPDATE IMPORT SET SHIPPER=? WHERE RECID=?"

并为此更新参数(注意它们的顺序):

<UpdateParameters>
    <asp:Parameter Name="shipper" Type="String" />
    <asp:Parameter Name="recid" Type="Int32" />
</UpdateParameters>

我建议阅读这篇 MSDN 文章:Using Parameters with the SqlDataSource Control

【讨论】:

  • 非常感谢这位先生! :) 我想我已经很难解决这个问题一个星期了?我的问题是,为什么它不是 BIND,而是 EVAL?但话又说回来,非常感谢!
  • Eval 是一种绑定方式,用于显示数据。 Bind 双向工作,从源到控制和控制到源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多