ASP.NET GridView Удаление "Входная строка была в неправильном формате"

У меня есть ASP.NET GridView, который отображает продукты одежды из моей базы данных. Поле в моей базе данных - это Price, и для отображения этого значения в £xxx.xx я установил Price DataFormatString равным {0:C}.

GridView также имеет кнопку удаления, которую я преобразовал в шаблон и добавил

OnClientClick="return confirm('Are you sure you want to delete this product?');"

добавить подтверждающее сообщение после нажатия кнопки. Однако, когда я нажимаю OK, чтобы подтвердить удаление продукта, я получаю это сообщение об ошибке:

Входная строка была не в правильном формате.

Когда я извлекаю DataFormatString из GridView, чтобы цены отображались как xxx.xxxx по умолчанию, функция удаления работает нормально. Только когда DataFormatString присутствует, я получаю эту ошибку. Как мне обойти это? Помощь приветствуется.

HTML

<div id="GridView">
    <asp:GridView ID="ProductsGridView" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellSpacing="-1" DataKeyNames="Id" DataSourceID="ProductsGridView_DS" GridLines="None" CssClass="ProductsGrid"     AlternatingRowStyle-CssClass="alt">
<AlternatingRowStyle CssClass="alt"></AlternatingRowStyle>
        <Columns>
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select" Text="Select"></asp:LinkButton>
                    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Are you sure you want to delete this     product?');"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            <asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" />
            <asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
            <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" DataFormatString="{0:C}" />
            <asp:CheckBoxField DataField="Available" HeaderText="Available" SortExpression="Available" />
            <asp:BoundField DataField="Stock" HeaderText="Stock" SortExpression="Stock" />
            <asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="UploadImage.aspx?Id={0}" Text="Upload Image" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="ProductsGridView_DS" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:db_1318766_zaraConnectionString %>" DeleteCommand="DELETE FROM [Products] WHERE     [Id] = @original_Id AND [Name] = @original_Name AND [Description] = @original_Description AND [Gender] = @original_Gender AND [Type] = @original_Type AND [Price] = @original_Price AND (([Available] = @original_Available)     OR ([Available] IS NULL AND @original_Available IS NULL)) AND [Stock] = @original_Stock" InsertCommand="INSERT INTO [Products] ([Name], [Description], [Gender], [Type], [Price], [Available], [Stock]) VALUES (@Name,     @Description, @Gender, @Type, @Price, @Available, @Stock)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [Products]" UpdateCommand="UPDATE [Products] SET [Name] = @Name, [Description] =     @Description, [Gender] = @Gender, [Type] = @Type, [Price] = @Price, [Available] = @Available, [Stock] = @Stock WHERE [Id] = @original_Id AND [Name] = @original_Name AND [Description] = @original_Description AND [Gender]     = @original_Gender AND [Type] = @original_Type AND [Price] = @original_Price AND (([Available] = @original_Available) OR ([Available] IS NULL AND @original_Available IS NULL)) AND [Stock] = @original_Stock">
        <DeleteParameters>
            <asp:Parameter Name="original_Id" Type="Int32" />
            <asp:Parameter Name="original_Name" Type="String" />
            <asp:Parameter Name="original_Description" Type="String" />
            <asp:Parameter Name="original_Gender" Type="String" />
            <asp:Parameter Name="original_Type" Type="String" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
            <asp:Parameter Name="original_Available" Type="Boolean" />
            <asp:Parameter Name="original_Stock" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="Gender" Type="String" />
            <asp:Parameter Name="Type" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="Available" Type="Boolean" />
            <asp:Parameter Name="Stock" Type="Int32" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="Gender" Type="String" />
            <asp:Parameter Name="Type" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="Available" Type="Boolean" />
            <asp:Parameter Name="Stock" Type="Int32" />
            <asp:Parameter Name="original_Id" Type="Int32" />
            <asp:Parameter Name="original_Name" Type="String" />
            <asp:Parameter Name="original_Description" Type="String" />
            <asp:Parameter Name="original_Gender" Type="String" />
            <asp:Parameter Name="original_Type" Type="String" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
            <asp:Parameter Name="original_Available" Type="Boolean" />
            <asp:Parameter Name="original_Stock" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
</div>

1 ответ

Решение

Попробуйте упростить оператор удаления?

Пример:

DELETE FROM [Products] WHERE [Id] = @original_Id

Я говорю это потому, что вижу, что вы удаляете оператор требует: "И [Цена] = @original_Price". Ваше форматирование цены может повлиять на ваше заявление об удалении.

Следовательно, когда вы удалите его (форматирование цены). Кажется, все снова работает нормально.

Другие вопросы по тегам