C# 下拉菜单中的值(已删除)

C# 下拉菜单中的值(已删除),c#,asp.net,sql,drop-down-menu,C#,Asp.net,Sql,Drop Down Menu,我有一个下拉菜单,可以从数据库中检索值 <asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource2" DataTextField="Plate" DataValueField="Plate" Height="45px" Width="141px"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataS

我有一个下拉菜单,可以从数据库中检索值

<asp:DropDownList ID="DropDownList4" runat="server" 
   DataSourceID="SqlDataSource2" DataTextField="Plate" DataValueField="Plate" 
   Height="45px" Width="141px">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
   ConnectionString="<%$ ConnectionStrings:Connection %>" 
   SelectCommand="SELECT [Plate] FROM [CarTab] WHERE ([Model] = @Model)">
      <SelectParameters>
          <asp:ControlParameter ControlID="DropDownList4" Name="Model" 
              PropertyName="SelectedValue" Type="String" />
      </SelectParameters>
</asp:SqlDataSource>
这将从数据库中检索车牌号。作为管理员,管理员将选择任何车牌号给用户出租。这里有一个问题,给用户后如何去掉车牌号?例如,板A被选中,管理员点击保存按钮后,板A无法再次选择。板A将从列表中删除。
我希望你能提供一些线索、想法和建议来帮助我。期待尽快收到你的来信。谢谢。

在数据库中用标记将车牌号标记为已删除

在数据库表中保留一个位字段。当管理员选择车牌号时,将其设置为1

在SelectedIndexChanged事件中更新它


按下保存按钮后,通过将flagfordelete列设置为true,将板材标记为已移除,并更改加载板材的查询以排除标记的板材。

这似乎与您的问题和其他问题有相似之处。 方法将有所不同,如果一个管理员将管理预订,另一方面,您必须寻找类似的方法,如下所述

如果你想适应的话,就要采取行动

我建议您创建另一个临时表,当用户从下拉列表中选择汽车时,您可以在其中保存CarID或CarCode以及sessionID。您可以在选择项目时触发事件

在此事件中,将carID和SessionID保存在临时表中

表结构

 CarTempTable
    CarID xxx
    SessionID varchar(x)
    Date   datetime
一旦这个表中有了CarID和SessionID,就可以使用如下查询为其他用户查询主表

SELECT CarID, CarName FROM Cars WHERE CarID NOT IN (SELECT CarID FROM CarTempTable WHERE SessionID <> "'+ SessionIDofUSER+'";
在上述方法中,您必须确保在会话结束时清除特定会话的临时表条目

这种方法应该适合你


编辑:如果是租车,那么最好在您的表格中有一个额外的列,根据用户是否预订了汽车来说明汽车是否可用。您可以在上面的临时表中使用此选项,因为我不确定您是如何通过付款或其他方式预订的

当用户按下保存按钮时,您必须再次检查数据库中的车牌可用性。如果所选铭牌已从管理员中删除,则您可以向最终用户显示正确的消息,否则请运行代码并保存记录。我希望你明白我的意思。

你没有说你使用的是哪种后端数据库,所以我的评论将适用于SQL Server

向名为“IsSelected”的CarTab表中添加位数据类型列。将SQL选择更改为从[CarTab]中选择[Plate],其中[Model]=@Model,ISSELECT=0。对于所有记录,最初将“IsSelected”字段设置为0。选择板材后,使用记录的主键将IsSelected字段更新为1。然后,只有尚未选择的记录才会填充DropDownList


如果两个用户加载了数据输入屏幕,而一个用户选择了一个板,则此解决方案可能存在并发问题。其他用户的屏幕将不会是最新的。

对不起,我真的不明白您的意思。管理员选择车牌号时如何设置为1?嗨,Dave。谢谢你的解决方案看起来很有趣。如何将IsSelected字段更新为1?@ColorShadow-您需要发送一个SQL更新命令,该命令的代码用于处理保存按钮的单击事件。类似于UPDATE CarTab SET IsSelected=1,其中id=@RecordID。id字段应该是CarTab表的主键,@RecordID应该是所选板的主键值。如果车牌是主键,则更新CarTab SET ISSELECT=1,其中车牌=@PlateValue。您需要根据您的情况调整其中的一些内容,但它应该为您指明一个可能的解决方案的方向。嗨,Dave,为什么我在isSelected 0列中键入0时,它会说未识别出此内容cell@ColorShadow-你没有说你使用的是什么类型的数据库,所以我可以对你的问题进行评论。这些是作为开发人员需要自己解决的问题。
 CarTempTable
    CarID xxx
    SessionID varchar(x)
    Date   datetime
SELECT CarID, CarName FROM Cars WHERE CarID NOT IN (SELECT CarID FROM CarTempTable WHERE SessionID <> "'+ SessionIDofUSER+'";