簡體   English   中英

根據下拉列表值從數據庫中選擇值

[英]Select value from database based on dropdownlist value

我有數據庫表leave_rec(name,date1,leave,ltype) ,一個Dropdown list和一個gridview

我想這樣做,當我在下拉列表中選擇月份(例如2月)時,gridview應該僅顯示2月的所有表值only(egrohan leuva,2/28/2013,full,casual) ,意味着記錄具有month = 2 (二月)。

如何克服這個問題? 我嘗試過,但目前只能在gridview中顯示所有值。 任何幫助將不勝感激。

SqlConnection conn = new SqlConnection();
conn.ConnectionString=System.Configuration.ConfigurationManager.ConnectionStrings["leave"].ConnectionString;
conn.Open();
SqlCommand cmd = new SqlCommand("select date1,leave,ltype from leave_rec where name='" + DropDownList1.SelectedValue + "'", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

上面的代碼顯示date1leaveltypedropdownlist1.selectedvalue. 但是現在我想在其中有幾個月的時間進行第二次下拉。 因此,當我在第二個中選擇2月時,網格應僅顯示2月dropdownlist1.selectedvalue的值。

首先,您的查詢必須是這樣的:

select date1, leave, ltype from leave_rec where MONTH(date1) = 2 // February

然后,將其集成到您的代碼中:

SqlCommand cmd = new SqlCommand("select date1, leave, ltype from leave_rec where MONTH(date1) = @p1", conn);
cmd.Parameters.Add(new SqlParameter("p1", combo.SelectedKey));

使用參數而不是字符串連接來避免SQL注入,請參見此處的示例: http : //www.dotnetperls.com/sqlparameter

(當然,將您自己的控件名稱用於“ combo.SelectedKey”)

我認為查詢中的問題,而不是名稱,您必須寫date1

SqlCommand cmd = new SqlCommand("select date1, leave, ltype from leave_rec where MONTH(date1) ='" + DropDownList1.SelectedValue + "'", conn);

將數據集轉換為DataTable,然后-通過dt.Filter = monthName.toString()進行過濾,然后將其綁定到GridView-dt.DefaultView;

同意@Saurabh,研究使用Linq和存儲過程來強制使用類型和建模。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM