C# 创建存储过程以将下拉列表的值与数据库中的值相乘
我有一个如下的存储过程:(有一个表,其中有一些列,包括C# 创建存储过程以将下拉列表的值与数据库中的值相乘,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,我有一个如下的存储过程:(有一个表,其中有一些列,包括'Ta','Em','Ma','Sa',其中有几个不同的记录) 网页包括一些下拉列表,如下所示: <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" >
'Ta'
,'Em'
,'Ma'
,'Sa'
,其中有几个不同的记录)
网页包括一些下拉列表,如下所示:
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" >
<asp:ListItem Value="8">Emk</asp:ListItem>
<asp:ListItem Value="8">Tar</asp:ListItem>
<asp:ListItem Value="8">San</asp:ListItem>
<asp:ListItem Value="8">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList2" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="7">Emk</asp:ListItem>
<asp:ListItem Value="7">Tar</asp:ListItem>
<asp:ListItem Value="7">San</asp:ListItem>
<asp:ListItem Value="7">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList3" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="6">Emk</asp:ListItem>
<asp:ListItem Value="6">Tar</asp:ListItem>
<asp:ListItem Value="6">San</asp:ListItem>
<asp:ListItem Value="6">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList4" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="6">Emk</asp:ListItem>
<asp:ListItem Value="6">Tar</asp:ListItem>
<asp:ListItem Value="6">San</asp:ListItem>
<asp:ListItem Value="6">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<br />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</form>
这些代码是有效的,但总是有相同的结果,因为这一部分
添加(“@Tar”,SqlDbType.Int).Value=
DropDownList1.SelectedValue
例如,在DP1中有几个值为8
的选项,如果用户在存储过程中选择任何值,它将与'@Tar'
相乘,则其他DP的结果相同,因此即使选择不同,结果也始终相同,但是如果用户在DP1
中选择'Emk'
,则值8仅与存储过程中的'@Emk'
相乘,如果在dp2
中选择'Mas'
,则与'@Mas'
相乘。
但我不知道如何在代码中定义它,我们将非常感谢您的帮助 像这样更改存储过程
DECLARE @dp1 varchar (100)
DECLARE @dp2 varchar (100)
DECLARE @dp3 varchar (100)
DECLARE @dp4 varchar (100)
DECLARE @dpp1 int
DECLARE @dpp2 int
DECLARE @dpp3 int
DECLARE @dpp4 int
set @dp1 = 'Emk' >>as example
set @dp2 = 'Mas' >>as example
if (@dp1= 'Emk')
Begin
set @dpp1= 8
Select Emk*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Tar')
Begin
set @dpp1= 8
Select Tar*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'San')
Begin
set @dpp1= 8
Select San*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Mas')
Begin
set @dpp1= 8
Select Mas*@dpp1 as val1 FROM Cdetail
End
if (@dp2= 'Emk')
Begin
set @dpp2= 7
Select Emk*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Tar')
Begin
set @dpp2= 7
Select Tar*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'San')
Begin
set @dpp2= 7
Select San*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Mas')
Begin
set @dpp2= 7
Select Mas*@dpp2 as val1 FROM Cdetail
End
SELECT
Namecar,
(Mas*@dpp1)+(San*@dpp1)+(Tar*@dpp1)+(Emk*@dpp1)+(Mas*@dpp2)+(San*@dpp2)+(Tar*@dpp2)+(Emk*@dpp2)
as finalresult
FROM Cdetail
请注意,这是一个示例,您需要对其进行改进
DECLARE @dp1 varchar (100)
DECLARE @dp2 varchar (100)
DECLARE @dp3 varchar (100)
DECLARE @dp4 varchar (100)
DECLARE @dpp1 int
DECLARE @dpp2 int
DECLARE @dpp3 int
DECLARE @dpp4 int
set @dp1 = 'Emk' >>as example
set @dp2 = 'Mas' >>as example
if (@dp1= 'Emk')
Begin
set @dpp1= 8
Select Emk*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Tar')
Begin
set @dpp1= 8
Select Tar*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'San')
Begin
set @dpp1= 8
Select San*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Mas')
Begin
set @dpp1= 8
Select Mas*@dpp1 as val1 FROM Cdetail
End
if (@dp2= 'Emk')
Begin
set @dpp2= 7
Select Emk*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Tar')
Begin
set @dpp2= 7
Select Tar*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'San')
Begin
set @dpp2= 7
Select San*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Mas')
Begin
set @dpp2= 7
Select Mas*@dpp2 as val1 FROM Cdetail
End
SELECT
Namecar,
(Mas*@dpp1)+(San*@dpp1)+(Tar*@dpp1)+(Emk*@dpp1)+(Mas*@dpp2)+(San*@dpp2)+(Tar*@dpp2)+(Emk*@dpp2)
as finalresult
FROM Cdetail
请注意,这是一个示例,您需要改进它
DECLARE @dp1 varchar (100)
DECLARE @dp2 varchar (100)
DECLARE @dp3 varchar (100)
DECLARE @dp4 varchar (100)
DECLARE @dpp1 int
DECLARE @dpp2 int
DECLARE @dpp3 int
DECLARE @dpp4 int
set @dp1 = 'Emk' >>as example
set @dp2 = 'Mas' >>as example
if (@dp1= 'Emk')
Begin
set @dpp1= 8
Select Emk*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Tar')
Begin
set @dpp1= 8
Select Tar*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'San')
Begin
set @dpp1= 8
Select San*@dpp1 as val1 FROM Cdetail
End
if (@dp1= 'Mas')
Begin
set @dpp1= 8
Select Mas*@dpp1 as val1 FROM Cdetail
End
if (@dp2= 'Emk')
Begin
set @dpp2= 7
Select Emk*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Tar')
Begin
set @dpp2= 7
Select Tar*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'San')
Begin
set @dpp2= 7
Select San*@dpp2 as val2 FROM Cdetail
End
if (@dp2= 'Mas')
Begin
set @dpp2= 7
Select Mas*@dpp2 as val1 FROM Cdetail
End
SELECT
Namecar,
(Mas*@dpp1)+(San*@dpp1)+(Tar*@dpp1)+(Emk*@dpp1)+(Mas*@dpp2)+(San*@dpp2)+(Tar*@dpp2)+(Emk*@dpp2)
as finalresult
FROM Cdetail