根据下拉列表值从数据库中选择值

本文关键字:选择 数据库 下拉列表 | 更新日期: 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, ltypedropdownlist1.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和存储过程来强制使用类型和建模。