Asp.net 如何将可用记录数附加到dropdownlist选项?
我希望我的帖子标题有意义 我们正在构建一个汽车经销商网络应用程序,允许潜在的汽车购买者确定哪种类型的汽车适合他们的预算和需求 因此,我们有汽车制造、车型、车况、车型、价格范围等的下拉列表 下面的代码显示了汽车品牌的下拉列表 当用户选择他/她喜欢的汽车品牌时,与该品牌相关的车型将自动加载到第二个下拉列表中Asp.net 如何将可用记录数附加到dropdownlist选项?,asp.net,sql-server,vb.net,Asp.net,Sql Server,Vb.net,我希望我的帖子标题有意义 我们正在构建一个汽车经销商网络应用程序,允许潜在的汽车购买者确定哪种类型的汽车适合他们的预算和需求 因此,我们有汽车制造、车型、车况、车型、价格范围等的下拉列表 下面的代码显示了汽车品牌的下拉列表 当用户选择他/她喜欢的汽车品牌时,与该品牌相关的车型将自动加载到第二个下拉列表中 <form id="form1" runat="server"> <div> <span style ="font-family:A
<form id="form1" runat="server">
<div>
<span style ="font-family:Arial">Select Make : </span>
<asp:DropDownList ID="ddlMake" runat="server" AutoPostBack = "true" OnSelectedIndexChanged="ddlMake_SelectedIndexChanged">
<asp:ListItem Text = "------" Value = ""></asp:ListItem>
</asp:DropDownList>
<br /><br />
<span style ="font-family:Arial">Select Model : </span>
<asp:DropDownList ID="ddlModel" runat="server" Enabled = "false" AutoPostBack = "true" OnSelectedIndexChanged="ddlModel_SelectedIndexChanged">
<asp:ListItem Text = "------" Value = ""></asp:ListItem>
</asp:DropDownList>
<br /><br />
<asp:button id="btnSave" runat="server" Text="Submit New Request"></asp:button><br /><br />
<asp:Label ID="lblResults" runat="server" Text="" Font-Names = "Arial"></asp:Label>
</div>
</form>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
ddlMake.AppendDataBoundItems = True
Dim strConnString As [String] = ConfigurationManager _
.ConnectionStrings("amsconstr").ConnectionString
Dim strQuery As [String] = "select vehicleId, Make from MakeModel"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.CommandType = CommandType.Text
cmd.CommandText = strQuery
cmd.Connection = con
Try
con.Open()
ddlMake.DataSource = cmd.ExecuteReader()
ddlMake.DataTextField = "Make"
ddlMake.DataValueField = "vehicleId"
ddlMake.DataBind()
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End If
End Sub
Protected Sub ddlMake_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
ddlModel.Items.Clear()
ddlModel.Items.Add(New ListItem("--Select Model--", ""))
ddlModel.AppendDataBoundItems = True
Dim strConnString As [String] = ConfigurationManager _
.ConnectionStrings("amsconstr").ConnectionString
Dim strQuery As [String] = "select vehicleId Employee from MakeModel " _
& "where vehicleId=@vehicleId"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.Parameters.AddWithValue("@vehicleId", _
ddlMake.SelectedItem.Value)
cmd.CommandType = CommandType.Text
cmd.CommandText = strQuery
cmd.Connection = con
Try
con.Open()
ddlModel.DataSource = cmd.ExecuteReader()
ddlModel.DataTextField = "Model"
ddlModel.DataValueField = "VehicleId"
ddlModel.DataBind()
If ddlModel.Items.Count > 1 Then
ddlModel.Enabled = True
Else
ddlModel.Enabled = False
End If
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End Sub
Protected Sub ddlModel_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim strConnString As [String] = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Dim strQuery As [String] = "select VehicleId, Model from MakeModel where VehicleId=@vehicleId"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.Parameters.AddWithValue("@vehicleId", ddlModel.SelectedItem.Value)
cmd.CommandType = CommandType.Text
cmd.CommandText = strQuery
cmd.Connection = con
Try
con.Open()
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End Sub
如何为特定品牌的汽车添加可用的汽车数量?更改SQL语句,使其返回所需的所有信息。而不仅仅是:
select VehicleId, Model from MakeModel.....
使用类似于:
select VehicleId, (Model + '(' + (select count(*) from MakeModel B where a.ID=b.ID) + ')') as Make from MakeModel A...
…这不太好,但会起作用。使用SQLServerCTE使代码更漂亮。或者最好将最后的代码放到存储过程中,并调用此过程
还有一个注意事项——尽量减少重复代码。希望有帮助。您需要使用CONVERT()函数
select VehicleId, (Model + '(' + CONVERT(NVARCHAR, (select count(*) from MakeModel B where a.ID=b.ID)) + ')') as Make from MakeModel A
@ivansivak,谢谢,但我收到了以下错误:
将varchar值“')转换为int数据类型时转换失败。
select VehicleId, (Model + '(' + CONVERT(NVARCHAR, (select count(*) from MakeModel B where a.ID=b.ID)) + ')') as Make from MakeModel A