3

配列リストを持つ ICollection クラス LabCollection があります。この配列リストには別のクラス LabEntity が含まれています。LabEntity には LabID、LabName などのプロパティがあります。

icollection クラスを gridview にバインドしています

LabCollection objLabCollection=new LabCollection();

gridview.datasource=objlabCollection
gridview.databind();

特定の LabName でグリッドにバインドする前に、クラスを埋める必要があります。私はこれを試します

BindingSource bs = new BindingSource();
bs.DataSource=objlabCollection
bs.Filter = "LabName='CPT'";

gridview.DataSource = bs;
gridview.DataBind();

これを達成する方法は?

4

2 に答える 2

1

2つのクラスLabCollectionとがありLabEntityます。LabCollection今が含まれていArrayListます。

より良いアプローチは、LabCollectionこのようにクラスを変更することです。(私はむしろそれに名前を付けたいですLabCollectionManager

public class LabCollectionManager()
{

    //.................

    public List<LabEntity> GetAllLabEntities()
    {
        //method that generates a generic list of LabEntity 
    }

    public List<LabEntity> GetLabEntitiesByLabName(string labName)
    {
        return GetAllLabEntities().Where(le => le.LabName == labName).ToList();
    }

    //.................

}

今度はコードでそれを呼び出します-このように後ろに

var labManager = new LabCollectionManager();
gridview.DataSource = labManager.GetLabEntitiesByLabName("CPT");
gridview.DataBind();

アップデート:

ArrayListを使用して永続化したい場合は、次のように関数を変更してください

public class LabCollectionManager()
{

    //.................

    public ArrayList GetAllLabEntities()
    {
        //method that generates a generic list of LabEntity 
    }

    public ArrayList GetLabEntitiesByLabName(string labName)
    {
        var completeList = GetAllLabEntities();
        var filteredList = new ArrayList(completeList.Cast<LabEntity>()
                                    .Where(le => le.LabName == labName)
                                    ToList());
        return filteredList;
    }

    //.................

}

PS:あまり最適化されていませんが、これは始めるのに役立ちます。

于 2012-11-12T03:15:29.000 に答える
1

確かに、naveen が回答したように、ユーザー定義のデータを操作するにはユーザー定義のメソッドが必要です。

public IList<LabEntity> GetAllEntities(string filterStr)
{
   var entity=from ds in datasource where ds.labName==filterStr select ds;
   return entity.ToList();
}

これdatasourceは、要素のリストまたは要素の配列、またはそれについて述べたいことでもあります。

また、戻り値の型を具体的なクラス型ではなくインターフェイスにすることをお勧めします。

于 2012-11-12T03:49:44.907 に答える