【问题标题】:How to bind grid view data based on the dropdown list selected value如何根据下拉列表选择值绑定网格视图数据
【发布时间】:2013-10-01 07:45:44
【问题描述】:

我有一个下拉列表来选择学生姓名。当我在下拉列表中选择学生姓名时,网格视图必须显示所选姓名的详细信息。 这是我的编码,但它没有显示任何内容。

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MGLCOMConnectionString"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("SELECT VALUE,VDESC FROM CSOPTFD WHERE OPTFIELD='WONO'AND VALUE LIKE '%" + customerddl.SelectedValue + "%'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();

这是我获取所选值详细信息的 cs 代码。但它没有任何作用。

【问题讨论】:

  • 您从哪里调用此代码...我的意思是您的下拉列表是否有回发事件?你能检查一下你是否在调试中得到了 selectedvalue 吗?
  • 当下拉列表中的值被选中时,这很有趣,我也启用了自动回发功能。我可以在标签中获取选定的下拉列表值。

标签: c# asp.net sql-server sql-server-2008 webforms


【解决方案1】:

VALUE 是 T-SQL 的 reserved keyword。与方括号一起使用,如[VALUE]

请改用parameterized queries。这种字符串连接对SQL Injection 攻击开放。

SqlCommand cmd = new SqlCommand("SELECT [VALUE], VDESC FROM CSOPTFD WHERE OPTFIELD = 'WONO' AND [VALUE] LIKE '%' + @value + '%'", con);
cmd.Parameters.AddWithValue("@value", customerddl.SelectedValue);

【讨论】:

  • 是的,值是我的列名。它在 sql server 中执行得很好
  • 您好,我尝试了这段代码,但它没有显示任何内容。当我像这样更改上面的代码时“SELECT [VALUE], VDESC FROM CSOPTFD WHERE OPTFIELD = 'WONO' AND [VALUE] LIKE '%" + @value + "%'" 有效,但显示所有值
  • 你好,上面的编码不起作用给我建议
【解决方案2】:

您是否正确绑定 Dropdown,例如 CustomerId 、 Text ,然后您是否使用 PostBack True 从 Selected_Index_Changed 事件中调用此代码?

【讨论】:

    【解决方案3】:

    尝试在try - catch 块中提供代码。使用finally 块通过con.Close(); 关闭连接

    还可以尝试关闭连接,然后访问数据集以获取值。

    SqlConnection con =null;
    DataSet ds=null;
    try
    {
            con = new SqlConnection(ConfigurationManager.ConnectionStrings["MGLCOMConnectionString"].ConnectionString);
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT VALUE,VDESC FROM CSOPTFD WHERE OPTFIELD='WONO'AND VALUE LIKE '%" + customerddl.SelectedValue + "%'", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            ds = new DataSet();
            da.Fill(ds);
    
    }
    catch(SQLException ex)
    {
    
    }
    finally
    {
         if(con!=null)
             con.Close();
    }
    GridView1.DataSource = ds;
    GridView1.DataBind();
    

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多