0

データリストを含むユーザーコントロールがあり、ユーザーコントロールがどのページにあるかに応じて、データリストのデータソースを異なるものに設定したいと思います。

したがって、私がする必要があるのは、データソースを取得して設定するデータリストのパブリックプロパティを公開することだと思います。

public datasource UserDataSource
{
get { return DataList1.DataSource; }
set { DataList1.DataSource = value; }
}

しかし、上記は明らかに機能しません。私はそれを次のように呼びます:

MyUserControl.UserDataSource = datasourcename;

次に、どういうわけか、ユーザーコントロール内のデータリストをデータバインドします。

明らかに、私はここでの私の要素から少し外れていますが、うまくいけば、これを機能させることができます。助けてくれてありがとう。

4

2 に答える 2

1

あなたがすでに回答を受け入れていることは知っていますが、私の考えを追加する必要があると感じています:

元のアイデアは正しかった - データソースを設定した後、データリストのデータバインドメソッドを呼び出すだけでした。上記の方法を実行することが最善の方法であるとは本当に思いません。カスタムオブジェクトの可能性のある IList または IEnumerable を取得し、それをデータリストに直接バインドするメソッドまたは writeonly プロパティ (あなたのように) が必要です。このユーザー コントロールを含むページまたはコントロールは、データ コントロールの種類を認識する必要はありません。Datalist から Repeater または GridView に変更する場合は、ユーザー コントロールにバインドするすべての場所で変更する必要があります。

例:

IList<CustomClass> results = new List<CustomClass>(); //you would load your collection from your database
this.myUserControl.LoadData(results);

ユーザーコントロールで:

public void LoadData(IList<CustomClass> data){
  this.datalist1.datasource = data;
  this.datalist1.databind();
}
于 2009-10-28T14:43:57.550 に答える
1

最初にデータリストを見つけてから、次のようにデータソースを割り当てるには、検索制御メソッドを使用する必要があります...

DataList dl = (DataList)yourLoadedusercontrol.FindControl("yourDatalist");
    dl.DataSource = yourdatasource;
于 2009-10-28T04:43:47.490 に答える