[英]Input string was not in a correct format vb.net/asp.net
這是我的表單視圖。
<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" />
<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的數據類型更改為Integer,我需要做什么?
謝謝!
您需要解決的第一件事是將raceid
與文本框綁定,如下所示:
<asp:TextBox ID="recid" runat="server" Text='<%# Bind("RECID") %>' ReadOnly="true" />
現在有一個關於提供者的問題。 在select命令中,您已使用RACEID = ?
, ?
用於OleDb
或Odbc
。 如果使用其中任何一個,則必須將“更新命令”更改為此:
UpdateCommand="UPDATE IMPORT SET SHIPPER=? WHERE RECID=?"
和UpdateParameters到此(注意其順序):
<UpdateParameters>
<asp:Parameter Name="shipper" Type="String" />
<asp:Parameter Name="recid" Type="Int32" />
</UpdateParameters>
我建議閱讀此MSDN文章: 通過SqlDataSource控件使用參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.