根据下拉列表值从数据库中选择值
本文关键字:选择 数据库 下拉列表 | 更新日期: 2023-09-27 18:02:10
我有一个数据库表leave_rec(name,date1,leave,ltype)
,一个Dropdown list
和一个gridview
。
我想这样做,当我选择月(例如月)。2月)在下拉列表中,gridview应显示2月only(e.g.rohan leuva,2/28/2013,full,casual)
的所有表值,表示month=2(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();
上面的代码显示date1
, leave
, ltype
的dropdownlist1.selectedvalue.
,但现在我想有第二个下拉菜单,其中月份将在那里。所以当我在第二个中选择二月时,网格应该显示dropdownlist1的值。
首先,您的查询需要像这样:
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",当然)
我认为问题在查询,而不是名称你必须写日期
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和存储过程来强制使用类型和建模。