asp.net
  • vb.net
  • 2014-06-18 29 views 0 likes 
    0

    這裏是我的FormView ..輸入字符串的不正確的格式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" /> 
    &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 [email protected] WHERE [email protected]" > 
    <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,我需要做些什麼?

    謝謝!

    +0

    什麼是數據庫中RECID的數據類型? – Win

    +0

    嗨! RECID是整數,在數據庫中自動遞增,它是主鍵。 – shesxue28

    回答

    0

    你需要修復的第一件事是與文本框結合raceid象下面這樣:

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

    現在有一個關於供應商的問題。在選擇命令中,您使用了RACEID = ??用於OleDbOdbc。如果您正在使用其中任何一個,你必須更新命令改成這樣:

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

    而且UpdateParameters這個(注意它們的順序):

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

    我會推薦閱讀這篇MSDN文章:Using Parameters with the SqlDataSource Control

    +0

    非常感謝你爲這位先生! :)我一直在很難解決這個問題一個星期,我想?我的問題是,爲什麼它不是BIND,而是EVAL?但是再一次,非常感謝你! – shesxue28

    +0

    'Eval'是單向綁定,用於顯示數據。 「綁定」從源頭到控制和控制到源代碼都是雙向的。 – afzalulh

    相關問題