我最近利用Gridview实现更新操作出现一问题“/iPOSTBlogSys”应用程序中的服务器错误。
--------------------------------------------------------------------------------ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[InvalidOperationException: ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。]
System.Web.UI.WebControls.ObjectDataSourceView.GetResolvedMethodData(Type type, String methodName, IDictionary allParameters, DataSourceOperation operation) +1440
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +2292
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +179
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1140
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +835
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +162
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +118
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +107
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +175
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint
protected void gdvBlogState_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
ObjectDataSource2.UpdateParameters[0].DefaultValue =e.Keys[0].ToString();//userid
ObjectDataSource2.UpdateParameters[1].DefaultValue = e.NewValues[0].ToString();//false a
ObjectDataSource2.UpdateParameters[2].DefaultValue = e.NewValues[1].ToString();//false b
ObjectDataSource2.Update(); gdvBlogState.DataBind();
}//类
public int UpdateblogVisibleCommend(int userid,bool a,bool b)//更新所有博客是否可见,是否推荐的信息
{
string connectstr = @"Data Source=198E\SQLEXPRESS;Initial Catalog=iPostDB;User ID=linfeng;Password=linfeng";
SqlConnection cmdconnect = new SqlConnection(connectstr);
string cmd = "update blog set BlogState='" + a + "',CommendOrnot='" + b + "' where UserID='" + userid + "'";
SqlCommand cmdstr = new SqlCommand(cmd, cmdconnect);
int i = 0;
cmdconnect.Open();
i=cmdstr.ExecuteNonQuery();
cmdconnect.Close();
return i;
}
--------------------------------------------------------------------------------ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[InvalidOperationException: ObjectDataSource“ObjectDataSource2”未能找到带参数的非泛型方法“UpdateblogVisibleCommend”: UserID, a, b, BlogState, CommendOrnot。]
System.Web.UI.WebControls.ObjectDataSourceView.GetResolvedMethodData(Type type, String methodName, IDictionary allParameters, DataSourceOperation operation) +1440
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +2292
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +179
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1140
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +835
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +162
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +118
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +107
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +175
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint
protected void gdvBlogState_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
ObjectDataSource2.UpdateParameters[0].DefaultValue =e.Keys[0].ToString();//userid
ObjectDataSource2.UpdateParameters[1].DefaultValue = e.NewValues[0].ToString();//false a
ObjectDataSource2.UpdateParameters[2].DefaultValue = e.NewValues[1].ToString();//false b
ObjectDataSource2.Update(); gdvBlogState.DataBind();
}//类
public int UpdateblogVisibleCommend(int userid,bool a,bool b)//更新所有博客是否可见,是否推荐的信息
{
string connectstr = @"Data Source=198E\SQLEXPRESS;Initial Catalog=iPostDB;User ID=linfeng;Password=linfeng";
SqlConnection cmdconnect = new SqlConnection(connectstr);
string cmd = "update blog set BlogState='" + a + "',CommendOrnot='" + b + "' where UserID='" + userid + "'";
SqlCommand cmdstr = new SqlCommand(cmd, cmdconnect);
int i = 0;
cmdconnect.Open();
i=cmdstr.ExecuteNonQuery();
cmdconnect.Close();
return i;
}
解决方案 »
- 求一个年历的js代码或者。。。。。。控件
- GridView实现HyperLinkField动态超链接
- 在OnInit事件里能取得我点击的是哪个按钮么
- 我的域名以前备案过,又新卖了一个域名还得重新做一遍么?
- Datalist控件删除记录(真的是超级郁闷!!获取不了ID值)
- 简单的字符处理问题
- 如何判断网络上的图片是否存在,比如这个链接"http://www.test.com/test-imgs/test.jpg"
- QQ能不能在Linux系统中使用?
- 再问:datagrid数据源为datareader时如何实现分页??解决100分!
- 请问一个关于datagrid的问题??
- 母版页是干什么的?别的页面如何引用母版呢
- csdn上1000个帖子中难得一遇的稍专业的问题,可惜结贴了。我不想把我的回复重复到别的类似问题的帖子了,所以开个贴请各位了解我的意思。
string cmd = "update blog set BlogState='" + a + "',CommendOrnot='" + b + "' where UserID='" + userid + "'";
这句很有问题,最起码也应该以参数的方式写出来,比如
string cmd = "update blog set BlogState= @BlogState,CommendOrnot= @CommendOrnot where UserID = @UserID"; 将来给参数赋值也可以是
ObjectDataSource2.UpdateParameters["UserID"].DefaultValue =e.Keys[0].ToString();//userid
ObjectDataSource2.UpdateParameters["BlogState"].DefaultValue = e.NewValues[0].ToString();//false a
ObjectDataSource2.UpdateParameters["CommendOrnot"].DefaultValue = e.NewValues[1].ToString();//false b
==
还是看你的更新语句,不需要修改的列如果是BoundField就设置其ReadOnly = "true",如果是TemplateField,就删除其EditTemplate
public int UpdateblogVisibleCommend(int userid,bool blogstate,bool commendornot)
{
string connectstr = @"Data Source=198E\SQLEXPRESS;Initial Catalog=iPostDB;User ID=linfeng;Password=linfeng";
SqlConnection cmdconnect = new SqlConnection(connectstr);
string cmd = "update blog set BlogState='" + blogstate + "',CommendOrnot='" + commendornot + "' where UserID='" + userid + "'";
SqlCommand cmdstr = new SqlCommand(cmd, cmdconnect);
int i = 0;
cmdconnect.Open();
i=cmdstr.ExecuteNonQuery();
cmdconnect.Close();
return i;
}现在运行,没有问题了。
不解???????????