ASP.net,如何制作我的下拉列表

时间:2014-03-27 20:19:16

标签: asp.net drop-down-menu

我的ASP.net页面上有一个下拉列表。它包含另一个表的主键值。它使用这些值放入一个新的交集表。

我的问题是,为了便于阅读/可用性,显示主键本身并不理想。我更喜欢显示相应的名称字段,但插入主键完全相同。我已经尝试更改datatextfield并将值字段保留为pk并选择其中一列或两列,但是当我尝试输入时,它返回说不能接受空值。

有人可以帮忙吗?

<InsertItemTemplate>
     <asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource4" DataTextField="BoatID" DataValueField="BoatID">
     </asp:DropDownList>
     <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Rowing ClubConnectionString %>" SelectCommand="SELECT [BoatID] FROM [Boat]"></asp:SqlDataSource>

</InsertItemTemplate>

谢谢!

以下是当datatextfield更改为船名并且sql包含船名列时尝试添加到表中时出现的错误页面:

应用程序中的服务器错误。

无法将值NULL插入列'BoatID',表'Rowing Club.dbo.SessionBoats';列不允许空值。 INSERT失败。 声明已经终止。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:无法将值NULL插入列'BoatID',表'Rowing Club.dbo.SessionBoats';列不允许空值。 INSERT失败。 声明已经终止。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[SqlException(0x80131904):无法将值NULL插入列'BoatID',表'Rowing Club.dbo.SessionBoats';列不允许空值。 INSERT失败。 该语句已终止。]    System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction) +1767866 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)+5352418    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)+244    System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean&amp; dataReady)+1691    System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)+269    System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task&amp; task,Boolean asyncWrite,SqlDataReader ds)+1406    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,TaskCompletionSource 1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion,String methodName,Boolean sendToPipe,Int32 timeout,Boolean asyncWrite)+205    System.Data.SqlClient.SqlCommand.ExecuteNonQuery()+160    System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand命令,DataSourceOperation操作)+380    System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert(IDictionary values)+399    System.Web.UI.DataSourceView.Insert(IDictionary values,DataSourceViewOperationCallback回调)+81    System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg,Boolean causeValidation)+365    System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e,Boolean causeValidation,String validationGroup)+584    System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source,EventArgs e)+89    System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)+37    System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source,EventArgs e)+80    System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)+37    System.Web.UI.WebControls.LinkBut​​ton.OnCommand(CommandEventArgs e)+121    System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(String eventArgument)+156    System.Web.UI.WebControls.LinkBut​​ton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+9528682    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+1724

0 个答案:

没有答案