C# 根据dropdownlist值从数据库中选择值

C# 根据dropdownlist值从数据库中选择值,c#,C#,我有一个数据库表leave\u rec(姓名、日期1、leave、ltype),一个下拉列表和一个gridview 我想这样做,当我在下拉列表中选择月份(例如二月)时,gridview应该只显示二月的所有表值(例如rohan leuva,2/28/2013,完整,偶然),表示月份=2(二月)的记录 如何克服这个问题?我尝试过,但此时只能在gridview中显示所有值。任何帮助都将非常感激 SqlConnection conn = new SqlConnection(); conn.Connect

我有一个数据库表
leave\u rec(姓名、日期1、leave、ltype)
,一个
下拉列表和一个
gridview

我想这样做,当我在下拉列表中选择月份(例如二月)时,gridview应该只显示二月的所有表值
(例如rohan leuva,2/28/2013,完整,偶然)
,表示月份=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();

上面的代码显示了
dropdownlist1的
date1
leave
ltype
。selectedvalue。
但现在我想有第二个下拉列表,其中月份将出现。因此,当我在第二个选项中选择二月时,网格应该显示dropdownlist1的值。selectedvalue仅用于二月。

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

首先,您的查询需要如下所示:

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注入,请参见以下示例:


(当然,使用您自己的控件名来表示“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

注意SQL注入我不明白你的意思?SQL注入在这方面对我有什么帮助?在下拉列表中,你有什么?非常感谢…这正是我想要的…最快捷的方式…再次感谢…如何对这个答案进行投票?你可以用答案左侧的向上箭头对答案进行投票,你也应该把它标记为正确的,这样问题就好像回答了一样。