0

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

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 代码。但它没有任何作用。

4

3 回答 3

1

VALUE是 T-SQL 的保留关键字。将它与方括号一起使用,例如[VALUE]

请改用参数化查询。这种字符串连接对SQL 注入攻击是开放的。

SqlCommand cmd = new SqlCommand("SELECT [VALUE], VDESC FROM CSOPTFD WHERE OPTFIELD = 'WONO' AND [VALUE] LIKE '%' + @value + '%'", con);
cmd.Parameters.AddWithValue("@value", customerddl.SelectedValue);
于 2013-10-01T07:54:46.687 回答
0

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

于 2013-10-01T10:59:17.257 回答
0

尝试在一个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();
于 2013-10-15T08:35:04.403 回答