类型“System.Int64”的对象无法转换为类型“System.Int32”。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 类型“System.Int64”的对象无法转换为类型“System.Int32”。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[ArgumentException: 类型“System.Int64”的对象无法转换为类型“System.Int32”。]
   System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr) +843
   System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig) +199
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +325
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +29
   System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +482
   System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method) +38
   System.Web.UI.WebControls.ObjectDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +1124
   System.Web.UI.DataSourceView.Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback) +75
   System.Web.UI.WebControls.DetailsView.HandleDelete(String commandArg) +830
   System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +556
   System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
   System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +115
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +163
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
请问这是怎么一回事啊。数据库中ID是BIGINT类型,Detailsview也设置了Datakeynames为ID,这是为什么呢。
 

解决方案 »

  1.   

    你将数据库中的id换成int类型试试看呢
      

  2.   

    改了以后还是这样,
    最好能不要改,int字段估计不够用吧。
      

  3.   

    建议你取出数据for循环中response.write()一下相关字段进行调试看看
      

  4.   

    那你可以这样 Int64 i = new Int64();
                i=Convert.ToInt64('数据库表中取出的字段');
      

  5.   

    Int32 表示 32 位有符号的整数。  
    Int64 表示 64 位有符号的整数。
     Convert.ToInt64("")
      

  6.   

    因为数据库存放的数据是bigint之类的long型数据,将其转换成int自然就会出错了。
      

  7.   

    晕,自己解决! protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            e.Keys[0] = Int32.Parse(e.Keys[0].ToString());
            //Response.Write(e.Keys[0].GetType());
            //Response.End();
        }