-2
   public DataTable selectcat(int catid)
{
    SqlConnection con = new SqlConnection(DBHelper.connection);
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    con.Open();
    com.CommandType = CommandType.StoredProcedure;
    com.CommandText = "selectcatalog";
    com.Parameters.AddWithValue("@catid", catid);
    SqlDataReader dr = com.ExecuteReader();
    DataTable dt = new DataTable();  
        dt.Load(dr);
        con.Close();
        return dt;
}

然后我在下拉列表事件(SelectedIndexChanged)中调用该函数

 protected void catselectddl_SelectedIndexChanged(object sender, EventArgs e)
{
   DataTable dt;

    DAcatagory obj = new DAcatagory();
    dt = obj.selectcat(catselectddl.SelectedValue);
    DataRow dr = dt.Rows[0];
    catnametxt.Text = dr["catname"].ToString();
    catdestxt.Text = dr["catdescription"].ToString();
}

但它在dt = obj.selectcat(catselectddl.SelectedValue); PS 处给了我无效的参数错误:下拉列表显示他的显示和数据库中的值

4

2 回答 2

3

只需将其转换为 int:

dt = obj.selectcat(Convert.ToInt32(catselectddl.SelectedValue));
于 2012-06-08T23:04:38.193 回答
0

尝试更换

  dt = obj.selectcat(catselectddl.SelectedValue);

  dt = selectcat(catselectdd1.SelectedValue);

在调试模式下,还要检查 ddl 发送到数据库的实际值

而且,如果数据库期望一个 int 作为值,则将其转换为 int32 ,就像其他答案一样。

于 2012-06-08T23:05:55.510 回答