【发布时间】:2017-03-05 12:30:14
【问题描述】:
我有一张桌子:
并乘以最终结果如下:
一个过程定义如下:(它必须将下拉列表的值与数据库中的值相乘,然后将它们水平相加并在最终结果中显示结果。
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 等)的存储过程并设置变量,然后乘以数据库中的相关值。
然后从上到下在gridview 中显示finalresult 的值。
我尝试使用以下代码,但它不起作用,我不知道如何将下拉列表的值发送到存储过程并根据选择提供每个项目。
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();
我想要,如果用户在 dropdow 1 中选择 Emk,8 数字乘以 (X) 到表中所有 Emk 的值,如果用户在 dropdow 2 中选择 Tar,7 数字乘以(X) 表中所有Tar的值。
【问题讨论】:
标签: c# asp.net sql-server stored-procedures