报错信息如下:
--------------------------------------------------------------------------------
指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
行 142:
行 143: SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_content",SqlDbType.VarChar,50));
===================================================================================
行 144: SpUpdate.Value=((DropDownList)e.Item.Cells[2].Controls[0]).SelectedItem.Value.ToString();
就是这行出问题了,我是用下拉框得到要更新的内容的,确定数据的字段是:varchar的,为什么要报错啊,上面的那个用文本框的就没有问题,怎么会是转换无效的错误啊,我用断点设置查看运行信息,让它返回为string 类型的也不可以。郁闷中,求求大家帮帮我了,急死了
=====================================================================================
行 145:
行 146: SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_value",SqlDbType.Money,8));
 源文件: d:\website\calllunch\manage_restaurant_content_edit.aspx.cs    行: 144 
----------------------------------------------------------------------------------
该函数全部源代码如下:
private void Dg_Restaurant_content_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
ConnectionDataBase();
SqlCommand CmUpdate=new SqlCommand("Update_restaurant_content",cn);
CmUpdate.CommandType=CommandType.StoredProcedure; SqlParameter SpUpdate=null;
SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_id",SqlDbType.Int,4));
SpUpdate.Value=e.Item.Cells[0].Text.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_index_id",SqlDbType.Int,4));
SpUpdate.Value=e.Item.Cells[1].Text.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_content",SqlDbType.VarChar,50));
SpUpdate.Value=((DropDownList)e.Item.Cells[2].Controls[0]).SelectedItem.Value.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_value",SqlDbType.Money,8));
SpUpdate.Value=((TextBox)e.Item.Cells[3].Controls[0]).Text; CmUpdate.ExecuteNonQuery();
BindGrid();
}
求求各位大侠,给点帮助了。

解决方案 »

  1.   

    SpUpdate.Value=((DropDownList)e.Item.FindControl("下拉控件的ID")).SelectedItem.Value.ToString();这样试下
      

  2.   

    SpUpdate.Value=((DropDownList)e.Item.Cells[2].Controls[0]).SelectedItem.Value
      

  3.   

    我帖出正确的代码:
    --------------------
    private void Dg_Restaurant_content_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    ConnectionDataBase();

    SqlCommand CmUpdate=new SqlCommand("Update_restaurant_content",cn);
    CmUpdate.CommandType=CommandType.StoredProcedure; SqlParameter SpUpdate=null;
    SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_id",SqlDbType.Int,4));
    SpUpdate.Value=e.Item.Cells[0].Text.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_index_id",SqlDbType.Int,4));
    SpUpdate.Value=e.Item.Cells[1].Text.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_content",SqlDbType.VarChar,50));
    SpUpdate.Value=((DropDownList)e.Item.FindControl("menu")).SelectedItem.Value.ToString(); SpUpdate=CmUpdate.Parameters.Add(new SqlParameter("@c_value",SqlDbType.Money,8));
    SpUpdate.Value=((TextBox)e.Item.Cells[3].Controls[0]).Text; CmUpdate.ExecuteNonQuery();
    BindGrid();
    cn.Close();
    }