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

时间:2013-03-04 11:30:11

标签: c#

我有数据库表leave_rec(name,date1,leave,ltype)Dropdown listgridview

我想这样做,当我在下拉列表中选择月份(例如2月)时,gridview应显示2月only(e.g.rohan leuva,2/28/2013,full,casual)的所有表值,表示月份= 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 leaveltypedropdownlist1.selectedvalue. {{1}}但现在我希望第二次下拉,其中几个月将会出现。因此,当我在第二个中选择二月时,网格应该仅显示2月份dropdownlist1.selectedvalue的值。

4 个答案:

答案 0 :(得分:1)

首先,您的查询必须是这样的:

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”)

答案 1 :(得分:0)

我认为查询中的问题,而不是名称,你必须写date1

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

答案 2 :(得分:0)

将数据集转换为DataTable 然后 - 通过dt.Filter = monthName.toString()过滤它 然后将其绑定到GridView - dt.DefaultView;

答案 3 :(得分:-1)

同意@Saurabh,研究使用Linq和存储过程来强制使用类型和建模。