试图过滤网格中的数据;无法创建静态类“”的实例;错误

本文关键字:静态类 创建 错误 实例 网格 数据 过滤 | 更新日期: 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就是需要解决的全部问题。