2017-03-06 1 views
1

ich eine gespeicherte Prozedur wie folgt aufweisen: (und gibt es eine Tabelle mit einigen Spalten enthalten 'Ta', 'Em', 'Ma', 'Sa' mit mehreren verschiedenen Datensätze)eine gespeicherte procudure Erstellen Werte von Dropdown-Liste zu multiplizieren mit den Werten in der Datenbank

ALTER PROCEDURE [dbo].[Cstored] 
(
@Tar int, 
@Emk int, 
@Mas int, 
@San int 
) 
AS 
BEGIN 
    SET NOCOUNT ON; 
SELECT 
Namecar, 
Ta*@Tar AS val1, 
Em*@Emk as val2, 
Ma*@Mas as val3, 
Sa*@San As val4, 
(Ta*@Tar)+(Em*@Emk)+(Ma*@Mas)+(San*@San) as finalresult 
FROM Cdetail 
END 

und eine Web-Seite enthalten einige Drop-Down-Liste wie folgt:

<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> 

und folgenden Code hinter:

protected void Button1_Click(object sender, EventArgs e) 
     { 

      DataTable dt; 
      string conStr = ConfigurationManager.ConnectionStrings["cConnectionString"].ConnectionString; 
      using (var sqlCon = new SqlConnection(conStr)) 
      { 
       sqlCon.Open(); 
       using (var scCommand = new SqlCommand("Cstored", sqlCon)) 
       { 
        scCommand.CommandType = CommandType.StoredProcedure; 
        scCommand.Parameters.Add("@Tar", SqlDbType.Int).Value = DropDownList1.SelectedValue; 
        scCommand.Parameters.Add("@Emk", SqlDbType.Int).Value = DropDownList2.SelectedValue; 
        scCommand.Parameters.Add("@Mas", SqlDbType.Int).Value = DropDownList3.SelectedValue; 
        scCommand.Parameters.Add("@San", SqlDbType.Int).Value = DropDownList4.SelectedValue; 
        using (SqlDataAdapter sda = new SqlDataAdapter(scCommand)) 
        { 
         dt = new DataTable(); 
         sda.Fill(dt); 
         GridView1.DataSource = dt; 
         GridView1.DataBind(); 
        } 
       } 
      } 

diese Code funktioniert, aber immer mit dem gleichen Ergebnis, da dieser Teil

scCommand.Parameters.Add ("@ Tar", SqlDbType.Int) .Value = DropDownList1.SelectedValue;

zum Beispiel in DP1 gibt es mehrere Wahl mit dem Wert 8 und wenn der Benutzer etwas wählen Sie ihn mit '@Tar' in Stored Procedure multipliziert wird, ist es auch für andere DP, weil es das Ergebnis gleich ist immer noch mit unterschiedlichen Auswahl, aber ich möchte, wenn Benutzer wählen 'Emk' in DP1 den Wert 8 nur multiplizieren mit '@Emk' in gespeicherten Prozedur und wenn 'Mas' in DP 2, multipliziert mit '@Mas'. aber ich weiß nicht, wie kann ich es in Codes definieren, würde Ihre Hilfe geschätzt werden.

Antwort

0

Ihre gespeicherte Prozedur als wie dies ändern,

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 

sein beachten Sie, es ist ein Beispiel und Sie brauchen, um es zu verbessern

Verwandte Themen