Фон
Я создаю форму ввода пользователя в ASP.net 4.0, используя Visual Studio Professional 2010 и C # с SQL Server 2005 в качестве бэкэнда.Эта форма была построена с использованием мастеров, предоставляемых Microsoft.Другими словами, я не писал код для этого, а использовал параметры, предоставленные мне, щелкая и заполняя диалоговые окна для просмотра списка.Я не настроил это никоим образом.Редактирование, удаление, обновление и вставка включены.
Эта форма использует раскрывающийся список для фильтрации записей.В этой форме есть две таблицы: таблица персонала, в которой перечислены парамедики, и таблица предпочтений, в которой перечислены их сменные предпочтения.Эта форма будет фильтровать для конкретного фельдшера, а затем добавить предпочтение множественной смены.
Проблема заключается в том, что при запуске страницы и попытке вставить данные с помощью команды Вставить я получаю сообщение об ошибке.Сообщение об ошибке гласит:
Невозможно вставить значение NULL в столбец «Preference_PK», таблица «ColdFusion_Apps.dbo.Preferences»;столбец не допускает пустых значений.Вставить не удается.Заявление было прекращено.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.SqlClient.SqlException: Невозможно вставить значение NULL в столбец 'Preference_PK', таблица 'ColdFusion_Apps.dbo.Preferences';столбец не допускает пустых значений.Вставить не удается.Утверждение было прекращено.
Как я могу это исправить?Я подозреваю, что проблема заключается в столбце первичного ключа моей таблицы предпочтений, но если я следовал всем мастерам и использовал только параметры по умолчанию, почему это произошло?
SQL-код для создания базы данных
CREATE TABLE Preferences
(
Preference_PK INT NOT NULL IDENTITY(1,1)
, Name_FK INT NOT NULL
, Preference VARCHAR(20)
)
;
INSERT INTO Preferences (Name_FK, Preference)
VALUES
(1,'Make a Selection')
,(2,'Make a Selection')
,(3,'Make a Selection')
,(4,'Make a Selection')
,(5,'Make a Selection')
;
ALTER TABLE Preferences
ADD CONSTRAINT PreferencePrimaryKey PRIMARY KEY CLUSTERED(Preference_PK)
;
ALTER TABLE Preferences
ADD CONSTRAINT PersonnelForeignKey FOREIGN KEY(Personnel_FK) REFERENCES Personnel(Personnel_PK)
;
CREATE TABLE Personnel
(
Personnel_PK INT NOT NULL IDENTITY(1,1)
, Name VARCHAR(50) NULL
, Title VARCHAR(20) NULL
, DateHired SMALLDATETIME NULL
)
;
INSERT INTO Personnel (Name, Title, DateHired)
VALUES
('Abes, Benjamin','Lieutenant','March 18, 2004')
,('Acton, Traci','Paramedic','May 30, 1991')
,('Adams, Bunny','Paramedic','January 4, 2001')
,('Alcime, Gabner','EMT','April 12, 2007')
,('Angel, Craig','Paramedic','November 5, 1992')
;
ALTER TABLE Personnel
ADD CONSTRAINT PersonnelPrimaryKey PRIMARY KEY CLUSTERED(Personnel_PK)
;
ASP.NET 4.0 код
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="Personnel_sql"
DataTextField="Name" DataValueField="Personnel_PK">
</asp:DropDownList>
<asp:SqlDataSource ID="Personnel_sql" runat="server" ConnectionString="<%$ ConnectionStrings:ColdFusion_AppsConnectionString %>"
SelectCommand="SELECT [Name], [Personnel_PK] FROM [Personnel]"></asp:SqlDataSource>
<asp:SqlDataSource ID="Preference_sql" runat="server" ConnectionString="<%$ ConnectionStrings:ColdFusion_AppsConnectionString %>"
DeleteCommand="DELETE FROM [Preferences] WHERE [Preference_PK] = @Preference_PK"
InsertCommand="INSERT INTO [Preferences] ([Personnel_FK], [Preference], [Preference_PK]) VALUES (@Personnel_FK, @Preference, @Preference_PK)"
SelectCommand="SELECT Preference_PK, Personnel_FK, Preference FROM Preferences WHERE (Personnel_FK = @Personnel_FK)"
UpdateCommand="UPDATE [Preferences] SET [Personnel_FK] = @Personnel_FK, [Preference] = @Preference WHERE [Preference_PK] = @Preference_PK">
<DeleteParameters>
<asp:Parameter Name="Preference_PK" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Personnel_FK" Type="Int32" />
<asp:Parameter Name="Preference" Type="String" />
<asp:Parameter Name="Preference_PK" Type="Int32" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Personnel_FK" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Personnel_FK" Type="Int32" />
<asp:Parameter Name="Preference" Type="String" />
<asp:Parameter Name="Preference_PK" Type="Int32" />
<asp:Parameter Name="Preference_PK" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataKeyNames="Preference_PK" DataSourceID="Preference_sql"
InsertItemPosition="LastItem">
<AlternatingItemTemplate>
<tr style="">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
</td>
<td>
<asp:Label ID="Preference_PKLabel" runat="server" Text='<%# Eval("Preference_PK") %>' />
</td>
<td>
<asp:Label ID="Personnel_FKLabel" runat="server" Text='<%# Eval("Personnel_FK") %>' />
</td>
<td>
<asp:Label ID="PreferenceLabel" runat="server" Text='<%# Eval("Preference") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<EditItemTemplate>
<tr style="">
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" />
</td>
<td>
<asp:Label ID="Preference_PKLabel1" runat="server" Text='<%# Eval("Preference_PK") %>' />
</td>
<td>
<asp:TextBox ID="Personnel_FKTextBox" runat="server" Text='<%# Bind("Personnel_FK") %>' />
</td>
<td>
<asp:TextBox ID="PreferenceTextBox" runat="server" Text='<%# Bind("Preference") %>' />
</td>
</tr>
</EditItemTemplate>
<EmptyDataTemplate>
<table runat="server" style="">
<tr>
<td>
No data was returned.
</td>
</tr>
</table>
</EmptyDataTemplate>
<InsertItemTemplate>
<tr style="">
<td>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
</td>
<td>
<asp:TextBox ID="Preference_PKTextBox" runat="server" Text='<%# Bind("Preference_PK") %>' />
</td>
<td>
<asp:TextBox ID="Personnel_FKTextBox" runat="server" Text='<%# Bind("Personnel_FK") %>' />
</td>
<td>
<asp:TextBox ID="PreferenceTextBox" runat="server" Text='<%# Bind("Preference") %>' />
</td>
</tr>
</InsertItemTemplate>
<ItemTemplate>
<tr style="">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
</td>
<td>
<asp:Label ID="Preference_PKLabel" runat="server" Text='<%# Eval("Preference_PK") %>' />
</td>
<td>
<asp:Label ID="Personnel_FKLabel" runat="server" Text='<%# Eval("Personnel_FK") %>' />
</td>
<td>
<asp:Label ID="PreferenceLabel" runat="server" Text='<%# Eval("Preference") %>' />
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table runat="server">
<tr runat="server">
<td runat="server">
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server">
</th>
<th runat="server">
Preference_PK
</th>
<th runat="server">
Personnel_FK
</th>
<th runat="server">
Preference
</th>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="">
</td>
</tr>
</table>
</LayoutTemplate>
<SelectedItemTemplate>
<tr style="">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
</td>
<td>
<asp:Label ID="Preference_PKLabel" runat="server" Text='<%# Eval("Preference_PK") %>' />
</td>
<td>
<asp:Label ID="Personnel_FKLabel" runat="server" Text='<%# Eval("Personnel_FK") %>' />
</td>
<td>
<asp:Label ID="PreferenceLabel" runat="server" Text='<%# Eval("Preference") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
</form>
</body>
</html>
Вопрос
- Как я могувставить значения в мою базу данных с помощью этого списка?
- Что я делаю не так?
- Пожалуйста, объясните это для меня явно.Я не программист, поэтому со мной вы не можете быть слишком упрощенным.