在数据绑定到 BlogRssBLL 上的时候,删除或者修改数据的时候会出现错误,错误信息:“未能找到带参数的非泛型方法.......”
例如:
1、所绑定的数据源对象的参数列表如下1所示。
2、GridView EditTemplate 模板绑定的字段为<%#Bind(ResourceName)%>,如下2所示。
3、大家应注意到第一个代码块中ObjectDataSource的UpdateParameters 和 InsertParameters参数段,1、其中参数类型相同,但名字不同。2、UpdateParameters Name中的名字与GridView每个模板绑定的字段相同。故调用UpdateResource参数时,可以成功调用,但若把UpdateParamenters改成Insertparameters参数时,却出现如上的问题。所以其关键地方在于,ObjectDataSource数据源的参数要与GridView绑定字段的参数相同,这样才不会出现:“未能找到带参数的非泛型方法.....”的问题。
4、不知现在微软解决了这个问题没有。如有不对之处,请指正。
<
asp:ObjectDataSource ID
=
"
ObjectDataSource1
"
runat
=
"
server
"
DeleteMethod
=
"
DelResource
"
InsertMethod = " InsertResource " SelectMethod = " GetAllResource "
TypeName = " PV.BLL.Security.ResourceManager " UpdateMethod = " UpdateResource " >
< DeleteParameters >
< asp:Parameter Name = " resourceID " Type = " Int32 " />
</ DeleteParameters >
< UpdateParameters >
< asp:Parameter Name = " ResourceID " Type = " Int32 " />
< asp:Parameter Name = " ResourceName " Type = " String " />
< asp:Parameter Name = " ResourceLink " Type = " String " />
< asp:Parameter Name = " ResourceImageUrl " Type = " String " />
< asp:Parameter Name = " RoleID " Type = " Int32 " />
< asp:Parameter Name = " Priority " Type = " Int32 " />
< asp:Parameter Name = " Remark " Type = " String " />
</ UpdateParameters >
< InsertParameters >
< asp:Parameter Name = " resourceName " Type = " String " />
< asp:Parameter Name = " resourceLink " Type = " String " />
< asp:Parameter Name = " imageUrl " Type = " String " />
< asp:Parameter Name = " roleID " Type = " Int32 " />
< asp:Parameter Name = " priority " Type = " Int32 " />
< asp:Parameter Name = " remark " Type = " String " />
</ InsertParameters >
</ asp:ObjectDataSource >
InsertMethod = " InsertResource " SelectMethod = " GetAllResource "
TypeName = " PV.BLL.Security.ResourceManager " UpdateMethod = " UpdateResource " >
< DeleteParameters >
< asp:Parameter Name = " resourceID " Type = " Int32 " />
</ DeleteParameters >
< UpdateParameters >
< asp:Parameter Name = " ResourceID " Type = " Int32 " />
< asp:Parameter Name = " ResourceName " Type = " String " />
< asp:Parameter Name = " ResourceLink " Type = " String " />
< asp:Parameter Name = " ResourceImageUrl " Type = " String " />
< asp:Parameter Name = " RoleID " Type = " Int32 " />
< asp:Parameter Name = " Priority " Type = " Int32 " />
< asp:Parameter Name = " Remark " Type = " String " />
</ UpdateParameters >
< InsertParameters >
< asp:Parameter Name = " resourceName " Type = " String " />
< asp:Parameter Name = " resourceLink " Type = " String " />
< asp:Parameter Name = " imageUrl " Type = " String " />
< asp:Parameter Name = " roleID " Type = " Int32 " />
< asp:Parameter Name = " priority " Type = " Int32 " />
< asp:Parameter Name = " remark " Type = " String " />
</ InsertParameters >
</ asp:ObjectDataSource >
<
asp:GridView
ID
="GridView1"
runat
="server"
AutoGenerateColumns
="False"
DataKeyNames
="ResourceID"
DataSourceID
="ObjectDataSource1"
Font-Size
="9pt"
>
< Columns >
< asp:CommandField ShowEditButton ="True" EditImageUrl ="~/Images/edit.gif" HeaderImageUrl ="~/Images/cfgRecorder.gif"
ShowInsertButton ="True" InsertImageUrl ="~/Images/addRecorder.gif" NewImageUrl ="~/Images/addRecorder.gif"
UpdateImageUrl ="~/Images/updRecorder.gif" CancelImageUrl ="~/Images/cancelRecorder.gif" ButtonType ="Image" FooterText ="添加" DeleteImageUrl ="~/Images/delRecorder.gif" ShowDeleteButton ="True" >
< FooterStyle BackColor ="Transparent" Font-Bold ="True" Font-Size ="9pt" ForeColor ="Navy"
HorizontalAlign ="Center" VerticalAlign ="Middle" />
</ asp:CommandField >
< asp:BoundField DataField ="ResourceID" HeaderText ="编号" InsertVisible ="False" ReadOnly ="True"
SortExpression ="ResourceID" Visible ="False" />
< asp:TemplateField HeaderText ="资源名称" SortExpression ="ResourceName" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxEditResourceName" runat ="server" Text ='<%# Bind("ResourceName") % > ' SkinID="Edit" Width="80px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label1" runat ="server" Text ='<%# Bind("ResourceName") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceName" runat ="server" SkinID ="Edit" Width ="80px" > 资源名称 </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="资源地址" SortExpression ="ResourceLink" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceUrl" runat ="server" Text ='<%# Bind("ResourceLink") % > ' SkinID="Edit" Width="180px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label2" runat ="server" Text ='<%# Bind("ResourceLink") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="180px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceUrl" runat ="server" SkinID ="Edit" Width ="180px" > PEScurity/rescure.aspx </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="资源图片" SortExpression ="ResourceImageUrl" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceImage" runat ="server" Text ='<%# Bind("ResourceImageUrl") % > ' SkinID="Edit" Width="80px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label3" runat ="server" Text ='<%# Bind("ResourceImageUrl") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceImage" runat ="server" SkinID ="Edit" Width ="80px" > default.gif </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="所属角色" SortExpression ="RoleID" >
< EditItemTemplate >
< asp:DropDownList ID ="DropDownListResourceRole" runat ="server" SelectedValue ='<%# Bind("RoleID") % > ' DataSourceID="ObjectDataSource2"
DataTextField="RoleName" DataValueField="RoleID" Width="80px">
</ asp:DropDownList >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label4" runat ="server" Text ='<%# Bind("RoleID") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:DropDownList ID ="DropDownListInsertRole" runat ="server" DataSourceID ="ObjectDataSource2"
DataTextField ="RoleName" DataValueField ="RoleID" >
</ asp:DropDownList >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="排序" SortExpression ="Priority" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxOrder" runat ="server" Text ='<%# Bind("Priority") % > ' Width="40px" SkinID="Edit"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label5" runat ="server" Text ='<%# Bind("Priority") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="40px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertOrder" runat ="server" Width ="40px" SkinID ="Edit" > 1 </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="备注" SortExpression ="Remark" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceRemark" runat ="server" Text ='<%# Bind("Remark") % > ' Rows="1" TextMode="MultiLine" Width="80px" SkinID="Edit"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label6" runat ="server" Text ='<%# Bind("Remark") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertRemark" runat ="server" Rows ="1" Text ='<%# Bind("Remark") % > '
TextMode="MultiLine" Width="80px" SkinID="Edit"> </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >
< Columns >
< asp:CommandField ShowEditButton ="True" EditImageUrl ="~/Images/edit.gif" HeaderImageUrl ="~/Images/cfgRecorder.gif"
ShowInsertButton ="True" InsertImageUrl ="~/Images/addRecorder.gif" NewImageUrl ="~/Images/addRecorder.gif"
UpdateImageUrl ="~/Images/updRecorder.gif" CancelImageUrl ="~/Images/cancelRecorder.gif" ButtonType ="Image" FooterText ="添加" DeleteImageUrl ="~/Images/delRecorder.gif" ShowDeleteButton ="True" >
< FooterStyle BackColor ="Transparent" Font-Bold ="True" Font-Size ="9pt" ForeColor ="Navy"
HorizontalAlign ="Center" VerticalAlign ="Middle" />
</ asp:CommandField >
< asp:BoundField DataField ="ResourceID" HeaderText ="编号" InsertVisible ="False" ReadOnly ="True"
SortExpression ="ResourceID" Visible ="False" />
< asp:TemplateField HeaderText ="资源名称" SortExpression ="ResourceName" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxEditResourceName" runat ="server" Text ='<%# Bind("ResourceName") % > ' SkinID="Edit" Width="80px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label1" runat ="server" Text ='<%# Bind("ResourceName") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceName" runat ="server" SkinID ="Edit" Width ="80px" > 资源名称 </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="资源地址" SortExpression ="ResourceLink" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceUrl" runat ="server" Text ='<%# Bind("ResourceLink") % > ' SkinID="Edit" Width="180px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label2" runat ="server" Text ='<%# Bind("ResourceLink") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="180px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceUrl" runat ="server" SkinID ="Edit" Width ="180px" > PEScurity/rescure.aspx </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="资源图片" SortExpression ="ResourceImageUrl" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceImage" runat ="server" Text ='<%# Bind("ResourceImageUrl") % > ' SkinID="Edit" Width="80px"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label3" runat ="server" Text ='<%# Bind("ResourceImageUrl") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertResourceImage" runat ="server" SkinID ="Edit" Width ="80px" > default.gif </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="所属角色" SortExpression ="RoleID" >
< EditItemTemplate >
< asp:DropDownList ID ="DropDownListResourceRole" runat ="server" SelectedValue ='<%# Bind("RoleID") % > ' DataSourceID="ObjectDataSource2"
DataTextField="RoleName" DataValueField="RoleID" Width="80px">
</ asp:DropDownList >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label4" runat ="server" Text ='<%# Bind("RoleID") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:DropDownList ID ="DropDownListInsertRole" runat ="server" DataSourceID ="ObjectDataSource2"
DataTextField ="RoleName" DataValueField ="RoleID" >
</ asp:DropDownList >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="排序" SortExpression ="Priority" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxOrder" runat ="server" Text ='<%# Bind("Priority") % > ' Width="40px" SkinID="Edit"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label5" runat ="server" Text ='<%# Bind("Priority") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="40px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertOrder" runat ="server" Width ="40px" SkinID ="Edit" > 1 </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="备注" SortExpression ="Remark" >
< EditItemTemplate >
< asp:TextBox ID ="TextBoxResourceRemark" runat ="server" Text ='<%# Bind("Remark") % > ' Rows="1" TextMode="MultiLine" Width="80px" SkinID="Edit"> </ asp:TextBox >
</ EditItemTemplate >
< ItemTemplate >
< asp:Label ID ="Label6" runat ="server" Text ='<%# Bind("Remark") % > '> </ asp:Label >
</ ItemTemplate >
< HeaderStyle Width ="80px" />
< FooterTemplate >
< asp:TextBox ID ="TextBoxInsertRemark" runat ="server" Rows ="1" Text ='<%# Bind("Remark") % > '
TextMode="MultiLine" Width="80px" SkinID="Edit"> </ asp:TextBox >
</ FooterTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >