0

車や家のウィンドウ ショッピングをしたことがある人は多いでしょう。そこで使っていたインターフェースを作りたい!検索のフィルタリングに使用される情報をユーザーが挿入できる 3 つのドロップダウンリストまたはテキストボックス

ここに画像の説明を入力

今の問題は、私はウェブを検索し、いくつかのヘルプ/コードを見つけましたが、どういうわけかまったく機能しません. 私が必要としているのは、ページが読み込まれるとき、すべてのデータがグリッドビュー (または他のビュー) に表示され、ユーザーが自分の情報を選択/入力して検索をクリックすると、ビューは次のように変更する必要があるためです。リサーチ

学生の登録に使用したのと同じコードを使用してみました

protected void btnSearch_Click(object sender, EventArgs e)
{
    string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
    SqlConnection con = new SqlConnection(strcon);

    SqlCommand com = new SqlCommand("Search_student", con);
    com.CommandType = CommandType.StoredProcedure;
    SqlParameter p1 = new SqlParameter("Course", DropDownList1.SelectedValue);
    SqlParameter p2 = new SqlParameter("Availability", DropDownList2.SelectedValue);
    SqlParameter p3 = new SqlParameter("JobSkill", DropDownList3.SelectedValue);
    com.Parameters.Add(p1);
    com.Parameters.Add(p2);
    com.Parameters.Add(p3);
    con.Open();
    SqlDataReader rd = com.ExecuteReader();
    if (rd.HasRows)
    {
           GridView1.DataSource = rd;
        GridView1.DataBind();
    }
}

次のストアド プロシージャで

ALTER PROCEDURE Search_student
(
@Course         varchar(30),
@Availability   varchar(50),
@JobSkill       varchar(50)
)
AS
SELECT * FROM Student
WHERE Course = @Course OR Availability = @Availability OR JobSkill=@JobSkill

誰かがこれを私が望むようにするための正しいコード/ソリューションを見つけるのを手伝ってもらえますか? 私が欲しいものに一致するものを見つけることができなかったので、これは多くの将来のコーダーに役立つと思います...おそらくどこを見ればよいかわかりませんが、私が気付いたのは、これ。

4

2 に答える 2

0

ストアドプロシージャを次のように変更すると、問題が解決します...検索に複数のパラメータを使用しているため、検索クエリを作成するには常に次の方法を使用してください...

ALTER PROCEDURE Search_student 
(
 @Course         varchar(30),
 @Availability   varchar(50),
 @JobSkill       varchar(50)
 )
AS
Begin
    SELECT * FROM Student 
    WHERE  Course =isnull(@Course,Course) 
    and Availability =isnull(@Availability,Availability)
    and JobSkill=isnull(@JobSkill,JobSkill)    
End
于 2012-10-19T07:01:19.280 に答える
0

代わりに

   if (rd.HasRows)
    {
          rd.Read();
          GridView1.DataBind();
    }

使ってください

   if (rd.HasRows)
   {
         GridView1.DataSource=rd;
         GridView1.DataBind();
   }
于 2012-10-19T07:03:41.743 に答える