试图过滤网格中的数据;无法创建静态类“”的实例;错误
本文关键字:静态类 创建 错误 实例 网格 数据 过滤 | 更新日期: 2023-09-27 17:59:19
我正在尝试过滤代码后面网格中填充的项。当我试图从数据访问层调用我的适配器时,我收到以下错误:
无法创建静态类"SFTIP.DataAccessLayer.InventoryAdapter"的实例
过滤器仅显示网格中与用户角色(AssetOwnershipProgramIds
)相关的项目。
错误在该行的new InventoryAdapter()
段:
filteredList = new InventoryAdapter().GetAllByFilter(inventoryFilter);
以下是我试图构建的过滤器的代码:
public List<Inventory> BindGrid()
{
List<Inventory> filteredList = new List<Inventory>();
SearchFilterInventory inventoryFilter = new SearchFilterInventory();
User currentUser;
currentUser = (Session["CurrentUser"] == null) ? (User)Session["CurrentUser"] : new User();
if (currentUser.AdminPrograms.Count > 0)
{
inventoryFilter.AssetOwnershipProgramIds.Add(currentUser.AdminPrograms[0].ReferenceId);
filteredList = new InventoryAdapter().GetAllByFilter(inventoryFilter);
}
return filteredList;
}
有人能为我的错误提供一些指导吗?我知道这是一件相当简单的事情——这是一个继承的项目,我仍在努力将所有的点联系起来。谢谢你看。
这个错误说明了一切。
不能创建static
类的实例。如果您想这样做,请从类声明中删除static
关键字。
MSDN表示:
静态类与非静态类基本相同,但是有一个区别:静态类不能实例化。在其他words,则不能使用new关键字来创建类类型。因为没有实例变量,所以可以访问静态类的成员。
静态类不需要实例化:
静态类与非静态类基本相同,但是有一个区别:静态类不能实例化。在其他words,则不能使用new关键字来创建类类型。因为没有实例变量,所以可以访问静态类的成员。
(来源:MSDN)
GetAllByFilter
方法很可能也是静态的。如果是这样的话,你的问题将通过将断层线改为以下来解决:
var filtereditems = InventoryAdapter.GetAllByFilter(inventoryFilter);
您需要这样的类声明,以实现代码的方式。
public class InventoryAdapter
{
public InventoryAdapter() { }
public object GetAllByFilter() { }
}
或者这样调用你的方法,如果它是静态的/你不拥有或控制它:
var filtereditems = InventoryAdapter.GetAllByFilter(inventoryFilter);
很抱歉延迟返回-生病了&其他较新的工作优先级。
所以,-一些非常简单的事情。犯了一个错误,认为"没有人会做(或不会做)那样的事",作为程序员,我们应该知道不要做出这种假设,对吧?无论如何,我不得不在aspx
页面中将<SelectParameters>
添加回ObjectDataSource
:
<asp:ObjectDataSource ID="odsItInventory" runat="server" SelectMethod="BindGrid"
TypeName="ADRUO.GUI.UserControls.ExtendedInventoryGridUserControl">
<SelectParameters>
<asp:SessionParameter Name="User" Type="Object" SessionField="CurrentUser" />
</SelectParameters>
</asp:ObjectDataSource>
谢谢你的帮助-你所有的评论都很有帮助,我相信如果我在页面中有这些参数,每个答案都会起作用。事实上,param add就是需要解决的全部问题。