Iテーブルを持っていますプロシージャは、次のように定義されます。(ドロップダウンリストの値にデータベースの値を掛けて、それらを水平に合計し、最終結果にリソールを表示する必要があります。は、C#でのSQLServerにストアドプロシージャにドロップダウンリストの値を渡す方法
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 Webページにいくつかのドロップダウンを作成しました:
<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など)でストアドプロシージャに送信され、変数に関連するvデータベース内のalue。 以降、finalresult
の値をgridview
に上から下に示します。
私は次のコードで試しましたが、うまくいかず、私はどのようにストアドプロシージャにドロップダウンの値を送信し、選択に基づいて各アイテムをフィードできますかわかりません。ユーザがdropdow 1 Emk
を選択した場合
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();
Iは、必要な値に、8
数は、テーブル内のすべてのEmk
の値に(X)を乗算し、ユーザがdropdow 2 Tar
を選択した場合、7
数(X)を乗算しテーブルのTar
の代わりに、あなたのストアドプロシージャで変数を宣言するの
それは動作しません、エラーがある:
次に、あなたのC#コードでは、このような何かを行いますStoredProcedureでは、ドロップダウンリストのデフォルト値はありません(DropDownList1.SelectedValue = 8;など) – Mom
どのようなエラーがありましたか?ユーザー入力を検証する必要があります... –
in 'sda.Fill(dt);' (DropDownList1.SelectedValue = 8; DropDownList2.SelectedValue = 7; DropDownList3.SelectedValue =(デフォルトのドロップダウン値の定義を見つけることができませんでした)このエラー(文字列からInt32へのパラメータ値の変換に失敗しました)、 また、 6; DropDownList4.SelectedValue = 5;)) – Mom