[英]How to pass value of drop down list to stored procedure in sqlserver in C#
我有一張桌子:
並乘以最終結果,如下所示:
一個過程的定義如下:(必須將下拉列表的值與數據庫中的值相乘,然后對它們進行水平求和,並在最終結果中顯示結果。
CREATE PROCEDURE [dbo].[Cstored]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Ta int
DECLARE @Em int
DECLARE @Ma int
DECLARE @Sa int
SET @Em = 8 >>>> need to be set by user selection in dropdows list
SET @Ta= 6 >>>> need to be set by user selection in dropdows list
SET @Sa= 5 >>>> need to be set by user selection in dropdows list
SET @Ma = 7 >>>> need to be set by user selection in dropdows list
SELECT
Namec,
Tar*@Ta AS val1,
Emk*@Em as val2,
Mas*@Ma as val3,
San*@Sa As val4,
(Tar*@Ta)+(Emk*@Em)+(Mas*@Ma)+(San*@Sa) as finalresult
FROM Cdetail
END
正如您在屏幕快照中所見,它在數據庫中運行良好,但是該值已手動設置。我希望通過用戶選擇來設置它。
SET @Em = 8
它用於數據庫,但是我在asp網頁上創建了一些下拉菜單,以便按用戶選擇值,如下所示:
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" >
<asp:ListItem Value="@Em">Emk</asp:ListItem>
<asp:ListItem Value="@Ta">Tar</asp:ListItem>
<asp:ListItem Value="@Sa">San</asp:ListItem>
<asp:ListItem Value="@Ma">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList2" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="@Em">Emk</asp:ListItem>
<asp:ListItem Value="@Ta">Tar</asp:ListItem>
<asp:ListItem Value="@Sa">San</asp:ListItem>
<asp:ListItem Value="@Ma">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList3" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="@Em">Emk</asp:ListItem>
<asp:ListItem Value="@Ta">Tar</asp:ListItem>
<asp:ListItem Value="@Sa">San</asp:ListItem>
<asp:ListItem Value="@Ma">Mas</asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList4" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="@Em">Emk</asp:ListItem>
<asp:ListItem Value="@Ta">Tar</asp:ListItem>
<asp:ListItem Value="@Sa">San</asp:ListItem>
<asp:ListItem Value="@Ma">Mas</asp:ListItem>
</asp:DropDownList>
每個下拉菜單都需要具有默認值,如下所示:
DropDownList1.SelectedValue = 8;
DropDownList2.SelectedValue = 7;
DropDownList3.SelectedValue = 6;
DropDownList4.SelectedValue = 5;
這意味着在下拉列表1中選擇的值必須發送到數字8(DD2數字7,依此類推)的存儲過程中,並設置變量,然后將其乘以數據庫中的相關值。 和這個節目值之后finalresult
在gridview
從上往下。
我嘗試使用下面的代碼,但是它不起作用,我不知道如何發送下拉列表的值來存儲過程並根據選擇輸入每個項目。
protected void Button1_Click(object sender, EventArgs e)
{
DropDownList1.SelectedValue = 8;
DropDownList2.SelectedValue = 7;
DropDownList3.SelectedValue = 6;
DropDownList4.SelectedValue = 5;
SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["carConnectionString"]);
sqlCon.Open();
SqlCommand scCommand = new SqlCommand("Carstored", sqlCon);
scCommand.CommandType = CommandType.StoredProcedure;
scCommand.Parameters.AddWithValue("????", DropDownList1);
scCommand.Parameters.AddWithValue("????", DropDownList2);
scCommand.Parameters.AddWithValue("????", DropDownList3);
scCommand.Parameters.AddWithValue("????", DropDownList4);
using (SqlDataAdapter sda = new SqlDataAdapter(scCommand))
{
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
我想,如果用戶在下拉菜單1中選擇Emk
,則將8
數字乘以(X)到表中所有Emk
的值,如果用戶選擇在下拉菜單2中的Tar
,則將7
號乘以(X)到表中所有的Tar
的值。
而不是在存儲過程中聲明變量,而是聲明參數:
CREATE PROCEDURE [dbo].[Cstored]
(
@Ta int,
@Em int,
@Ma int,
@Sa int
)
AS
BEGIN
SET NOCOUNT ON;
SELECT
Namec,
Tar*@Ta AS val1,
Emk*@Em as val2,
Mas*@Ma as val3,
San*@Sa As val4,
(Tar*@Ta)+(Emk*@Em)+(Mas*@Ma)+(San*@Sa) as finalresult
FROM Cdetail
END
然后,在您的C#代碼中,執行以下操作:
DataTable dt;
using(var sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["carConnectionString"]))
{
sqlCon.Open();
using(var scCommand = new SqlCommand("Carstored", sqlCon))
{
scCommand.CommandType = CommandType.StoredProcedure;
scCommand.Parameters.Add("@Ta", SqlDbType.Int).Value = DropDownList1.SelectedValue;
scCommand.Parameters.Add("@Em", SqlDbType.Int).Value = DropDownList2.SelectedValue;
scCommand.Parameters.Add("@Ma", SqlDbType.Int).Value = DropDownList3.SelectedValue;
scCommand.Parameters.Add("@Sa", SqlDbType.Int).Value = DropDownList4.SelectedValue;
using (SqlDataAdapter sda = new SqlDataAdapter(scCommand))
{
dt = new DataTable();
sda.Fill(dt);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.