未能找到带参数的非泛型方法

本文探讨了ASP.NET中使用GridView进行数据绑定时遇到的问题,特别是当修改或删除数据时出现“未能找到带参数的非泛型方法”的错误。文章详细分析了ObjectDataSource组件的参数配置,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在数据绑定到 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>

 

  <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>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值