2012-10-19 111 views
0

好的,我們所有人都在某個時間完成了購物車或房子的窗口!我們在那裏使用的界面我想創建! 3個dropdownlists或文本框,用戶可以插入信息將被用於過濾搜索用搜索框填充gridview

enter image description here

現在的問題是,我已經在網上搜索,發現了一些幫助/代碼,但不知何故,沒有按頗有」工作。因爲我需要的是,當頁面加載時,所有的數據應該顯示在gridview(或任何其他視圖)中,然後當用戶選擇/輸入他/她的信息並單擊搜索時,視圖必須根據有搜索

我使用我用來註冊學生

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 [email protected] 

有人可以幫我找到合適的代碼/解決方案讓這個做我想要的?我認爲這將有助於很多未來的編碼人員,因爲我找不到符合我想要的任何東西......也許我不知道該在哪裏尋找,但是我意識到存在許多變量參與尋找類似這個。

+0

嘿請填寫GridView1的數據源與RD。 –

回答

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 
0

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

請使用

if (rd.HasRows) 
    { 
     GridView1.DataSource=rd; 
     GridView1.DataBind(); 
    }