ItemUpdating NewValues缺少参数

时间:2011-04-11 15:41:09

标签: asp.net sql-server vb.net

我有一个包含多个数据项的formview,除了一个不会与其余参数一起更新的参数外,它们的工作方式都很完美。 formview的datasource updateparameter设置为什么都不做,以便我可以在代码隐藏中处理更新。除了在formview的ItemUpdating事件的OldValues和NewValues参数中缺少一个参数(“salesprice”)之外,每个项目都可以正常工作。数据应该正确地插入到文本框中,格式正确且全部。

我附加了html,SQL(用于getLoanData())和代码隐藏。

为什么除了“salesprice”参数之外,New / OldValue参数中是否存在每个参数?我已经尝试在没有formatstring的情况下填充文本框,但它仍然缺失。是否存在可能导致问题的资金SQL数据类型?

HTML:

<asp:FormView ID="fvLoanDetails" runat="server" DataKeyNames="orderid" 
DataSourceID="sqlLoanDetails" Width="100%">
<ItemTemplate>
    ...
</ItemTemplate>
<EditItemTemplate>
    <table class="orderSectionHeader">
        <tr>
            <td style="padding-left:10px;">
                <h2>Loan Details</h2>
            </td>
            <td style="text-align:right;">    
                <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" />
                <asp:Button ID="bvnSave" runat="server" Text="Save" CommandName="Update" />
            </td>
        </tr>
    </table>
    <table class="orderSection">
        <tr>
            <td class="orderHeader" style="vertical-align:top;">
                Loan Number
            </td>
            <td>
                <asp:Label ID="lblLoanNumber" CssClass="orderData" runat="server" 
                    Text='<%# Bind("loannumber") %>' />
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Business Channel
            </td>
            <td>
                <asp:DropDownList ID="ddlBusinessChannel" runat="server" 
                    DataSourceID="sqlBusinessChannels" DataTextField="BusinessChannel" 
                    DataValueField="BusinessChannel" SelectedValue='<%# Bind("businesschannel") %>'>
                </asp:DropDownList>                                
                <asp:SqlDataSource ID="sqlBusinessChannels" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:Jade_4 %>" 
                    SelectCommand="SELECT DISTINCT [BusinessChannel] FROM [Loans] ORDER BY [BusinessChannel]">
                </asp:SqlDataSource>                                
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Loan Type
            </td>
            <td>
                <asp:DropDownList ID="ddlLoanType" runat="server" 
                    DataSourceID="sqlLoanType" DataTextField="LoanType" 
                    DataValueField="LoanType" SelectedValue='<%# Bind("loantype") %>'>
                </asp:DropDownList>                                
                <asp:SqlDataSource ID="sqlLoanType" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:Jade_4 %>" 
                    SelectCommand="SELECT DISTINCT [LoanType] FROM [Loans] ORDER BY [LoanType]">
                </asp:SqlDataSource>  
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Purpose
            </td>
            <td>
                <asp:DropDownList ID="ddlPurpose" runat="server" 
                    SelectedValue='<%# Bind("purpose") %>'>
                    <asp:ListItem Text="Purchase" Value="False" />
                    <asp:ListItem Text="Refinance" Value="True" />
                </asp:DropDownList>              
            </td>
        </tr>
        <tr id="trSalesPrice" runat="server">
            <td class="orderHeader">
                Sales Price
            </td>
            <td>
                <asp:TextBox ID="txtSalesPrice" CssClass="orderData" runat="server" Width="100"
                    Text='<%# Bind("salesprice", "{0:F2}") %>' />
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Borrower
            </td>
            <td>
                <table cellspacing="0">
                    <tr style="font-size:8pt;padding-bottom:0px;">
                        <td>First</td><td>Last</td>
                    </tr>
                    <tr>
                        <td>
                            <asp:TextBox ID="txtBFirst" CssClass="orderData" runat="server" Width="80" 
                                Text='<%# Bind("firstname") %>' />
                        </td>
                        <td>
                            <asp:TextBox ID="txtBLast" CssClass="orderData" runat="server" Width="120" 
                                Text='<%# Bind("lastname") %>' />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Borrower Email
            </td>
            <td>
                <asp:TextBox ID="txtEmail" CssClass="orderData" runat="server" Width="200"
                    Text='<%# Bind("email") %>' />
            </td>
        </tr>
        <tr>
            <td class="orderHeader" style="vertical-align:top;">
                Mailing Address
            </td>
            <td>
                <table cellspacing="0">
                    <tr style="font-size:8pt;padding-bottom:0px;">
                        <td colspan="3">Address</td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <asp:TextBox ID="txtAddress" CssClass="orderData" runat="server" Width="200" 
                                Text='<%# Bind("address") %>' />
                        </td>
                    </tr>
                    <tr style="font-size:8pt;padding-bottom:0px;">
                        <td>City</td><td>State</td><td>Zip</td>
                    </tr>
                    <tr>
                        <td>
                            <asp:TextBox ID="txtCity" CssClass="orderData" runat="server" Width="100"
                                Text='<%# Bind("city") %>' />
                        </td>
                        <td>
                            <asp:TextBox ID="txtState" CssClass="orderData" runat="server" Width="30" 
                                Text='<%# Bind("state") %>' />
                        </td>
                        <td>
                            <asp:TextBox ID="txtZip" CssClass="orderData" runat="server" Width="50" 
                                Text='<%# Bind("zip") %>' />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Borrower Primary
            </td>
            <td>
                <asp:TextBox ID="txtBPhone" CssClass="orderData" runat="server" 
                    Text='<%# Bind("phone1", "{0:(###) ###-####}")%>' />
            </td>
        </tr>
        <tr>
            <td class="orderHeader">
                Borrower Secondary
            </td>
            <td>
                <asp:TextBox ID="txtBCell" CssClass="orderData" runat="server" 
                    Text='<%# Bind("phone2", "{0:(###) ###-####}")%>' />
            </td>
        </tr>
    </table>
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="sqlLoanDetails" runat="server" 
    ConnectionString="<%$ ConnectionStrings:Jade_4 %>" 
    SelectCommand="select @orderid as orderid, * from dbo.getLoanData(@orderid)"
    UpdateCommand="select @orderid">
    <SelectParameters>
        <asp:ControlParameter ControlID="hdnOrderID" Name="orderid" 
            PropertyName="Value" DefaultValue="0" />
    </SelectParameters>          
</asp:SqlDataSource>

VB.NET:

Protected Sub fvLoanDetails_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewUpdateEventArgs) Handles fvLoanDetails.ItemUpdating

    Dim o As Order = DAL.GetOrderById(hdnOrderID.Value)
    Dim l As Loan = DAL.GetLoanByLoanID(o.LoanID)
    Dim b As Contact = DAL.GetContactById(l.BorrowerContactID)

    l.BusinessChannel = e.NewValues("businesschannel")
    l.LoanType = e.NewValues("loantype")
    l.Purpose = e.NewValues("purpose")
    l.SalesPrice = e.NewValues("salesprice")
    DAL.UpdateLoan(l)

    b.FirstName = e.NewValues("firstname")
    b.LastName = e.NewValues("lastname")
    b.Address = e.NewValues("address")
    b.City = e.NewValues("city")
    b.State = e.NewValues("state")
    b.Zip = e.NewValues("zip")
    b.Phone = e.NewValues("phone1")
    b.Cell = e.NewValues("phone2")
    DAL.UpdateContact(b)

End Sub

SQL:

    select 
l.loannumber, l.businesschannel, l.loantype, l.purpose, l.salesprice, b.firstname, b.lastname, b.email, 
b.address, b.city, b.state, b.zip, b.phone as phone1, b.cell as phone2,
dbo.formataddressweb(b.address, '', b.city, b.state, b.zip) as mailingaddress          from loans l 
join orders o on o.orderid=@orderid
join contacts b on l.borrowercontactid=b.contactid
where l.loanid=(select loanid from orders where orderid=@orderid)

1 个答案:

答案 0 :(得分:0)

您是否尝试过其他格式字符串?

Text='<%# Bind("salesprice", "{0:C}") %>'