Не удается удалить запись в форме просмотра, когда значение равно NULL

У меня проблемы с удалением записи в FormView, подключенной к LinqDataSource. Таблица, которую использует LinqDataSource, допускает значения NULL почти для всех полей. Если я создаю новую запись в FormView и заполняю все значения, то пытаюсь удалить ее, она работает нормально. Однако, если я оставлю любое из полей пустым, затем сохраню и попытаюсь удалить, он выдаст следующее исключение:

Не удалось установить одно или несколько свойств для типа PRIDE.Info___Employee_Health_History. не является допустимым значением для Int16.

То же самое происходит для real столбцы в таблице. Если я оставлю один из них пустым, затем сохраню и попробую удалить, я получу то же исключение с другим типом.

Мой самый большой вопрос: почему он пытается установить какие-либо значения при удалении?

Вот мой стол:

Таблица

Мой код FormView:

<asp:FormView ID="fvHealthHistory" runat="server" CssClass="full" 
    AllowPaging="True" DataSourceID="ldsHealthHistory" DataKeyNames="ID" 
    oniteminserting="fvHealthHistory_ItemInserting">
    <EmptyDataTemplate>
        <p>No records found.</p>
        <p>
            <asp:Button ID="btnNew" runat="server" Text="New Record" CommandName="New" />
        </p>
    </EmptyDataTemplate>
    <InsertItemTemplate>
        <table class="pad5">
            <tr>
                <td class="field-name">Date:</td>
                <td>
                    <asp:TextBox ID="txtDate" runat="server" Text='<%#Bind("Date", "{0:dd MMM yyyy}") %>' />
                    <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" Format="dd MMM yyyy" />
                </td>
            </tr>
            <tr>
                <td class="field-name">Weight:</td>
                <td><asp:TextBox ID="txtWeight" runat="server" Text='<%#Bind("Weight") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Height:</td>
                <td><asp:TextBox ID="txtHeight" runat="server" Text='<%#Bind("Height") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Pulse:</td>
                <td><asp:TextBox ID="txtPulse" runat="server" Text='<%#Bind("Pulse") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Systolic:</td>
                <td><asp:TextBox ID="txtSystolic" runat="server" Text='<%#Bind("Systolic") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Diastolic:</td>
                <td><asp:TextBox ID="txtDiastolic" runat="server" Text='<%#Bind("Diastolic") %>' /></td>
            </tr>
        </table>

        <p>
            <asp:Button ID="btnInsert" runat="server" Text="Insert" CommandName="Insert" />
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" />
        </p>
    </InsertItemTemplate>
    <EditItemTemplate>
        <table class="pad5">
            <tr>
                <td class="field-name">Date:</td>
                <td>
                    <asp:TextBox ID="txtDate" runat="server" Text='<%#Bind("Date", "{0:dd MMM yyyy}") %>' />
                    <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" Format="dd MMM yyyy" />
                </td>
            </tr>
            <tr>
                <td class="field-name">Weight:</td>
                <td><asp:TextBox ID="txtWeight" runat="server" Text='<%#Bind("Weight") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Height:</td>
                <td><asp:TextBox ID="txtHeight" runat="server" Text='<%#Bind("Height") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Pulse:</td>
                <td><asp:TextBox ID="txtPulse" runat="server" Text='<%#Bind("Pulse") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Systolic:</td>
                <td><asp:TextBox ID="txtSystolic" runat="server" Text='<%#Bind("Systolic") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Diastolic:</td>
                <td><asp:TextBox ID="txtDiastolic" runat="server" Text='<%#Bind("Diastolic") %>' /></td>
            </tr>
        </table>

        <p>
            <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" />
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" />
        </p>
    </EditItemTemplate>
    <ItemTemplate>
        <table class="pad5">
            <tr>
                <td class="field-name">Date:</td>
                <td>
                    <asp:Label ID="txtDate" runat="server" Text='<%#Bind("Date", "{0:dd MMM yyyy}") %>' />
                </td>
            </tr>
            <tr>
                <td class="field-name">Weight:</td>
                <td><asp:Label ID="txtWeight" runat="server" Text='<%#Bind("Weight") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Height:</td>
                <td><asp:Label ID="txtHeight" runat="server" Text='<%#Bind("Height") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Pulse:</td>
                <td><asp:Label ID="txtPulse" runat="server" Text='<%#Bind("Pulse") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Systolic:</td>
                <td><asp:Label ID="txtSystolic" runat="server" Text='<%#Bind("Systolic") %>' /></td>
            </tr>
            <tr>
                <td class="field-name">Diastolic:</td>
                <td><asp:Label ID="txtDiastolic" runat="server" Text='<%#Bind("Diastolic") %>' /></td>
            </tr>
        </table>

        <p>
            <asp:Button ID="btnNew" runat="server" Text="New" CommandName="New" />
            <asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" />
            <asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete this record?')" />
        </p>
    </ItemTemplate>
    <PagerSettings Mode="NextPreviousFirstLast" 
        FirstPageText="&amp;lt;&amp;lt; First" LastPageText="Last &amp;gt;&amp;gt;" 
        NextPageText="Next &amp;gt;" PreviousPageText="&amp;lt; Previous" />
    <PagerStyle CssClass="pager" />
</asp:FormView>

Событие ItemInserting LinqDataSoure:

protected void fvHealthHistory_ItemInserting(object sender, FormViewInsertEventArgs e)
{
    e.Values["Worker_ID"] = Convert.ToInt32(Request.QueryString["id"]);
}

И наконец мой LinqDataSource:

<asp:LinqDataSource ID="ldsHealthHistory" runat="server" 
    ContextTypeName="PRIDE.PRIDEDataContext" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" EntityTypeName="" OrderBy="Date desc" 
    TableName="Info___Employee_Health_Histories" Where="Worker_ID == @Worker_ID">
    <WhereParameters>
        <asp:QueryStringParameter DefaultValue="0" Name="Worker_ID" 
            QueryStringField="id" Type="Int32" />
    </WhereParameters>
    <InsertParameters>
        <asp:Parameter Name="Date" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Weight" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Height" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Pulse" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Systolic" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Diastolic" ConvertEmptyStringToNull="true" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="Date" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Weight" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Height" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Pulse" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Systolic" ConvertEmptyStringToNull="true" />
        <asp:Parameter Name="Diastolic" ConvertEmptyStringToNull="true" />
    </UpdateParameters>
</asp:LinqDataSource>

Кто-нибудь знает, почему это позволило бы мне удалить запись, только если были заполнены ВСЕ пустые поля?

0 ответов

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