質問

2つの列があるテーブルがあります:

CommunityID
PersonID

そして" People" (特に)を持つテーブル:

FirstName
LastName

コミュニティごとに異なるDataGridを表示します。各データグリッドには、そのコミュニティの一部である人々のみが含まれます。 4つの個別のSqlDataSourcesを使用せずにこれを実行したいです。

ItemTemplate内にDataGridを備えたRepeaterは良い方法のように見えますが、繰り返しごとに異なる値で動作させるための頭や尾を作ることはできません。

これを行うためのより良い方法に関する提案があれば、ASP.NETの世界への私の最初の進出の1つであるため、非常に感謝します

ありがとう、

マイク

役に立ちましたか?

解決

個人的にはDataGridコントロールを使用しません。これは、出力に対するコントロールを制限し、新しい GridView & ListView コントロール(DataGridは廃止されていません必要に応じて自由に使用できます)。代替の使用を検討することもできますが、そうする必要はありません。

探していることを行うには、次のようなマークアップが必要です。

<asp:Repeater runat="server" ID="myRepeater" 
              onitemdatabound="Repeater_ItemDataBound">
<ItemTemplate>
    <asp:DataGrid runat="server" ID="myDataGrid">
    </asp:DataGrid>
</ItemTemplate>
</asp:Repeater>

次に、次のコードビハインドでマークアップを結び付けます:

protected void Page_Load(object sender, EventArgs e)
{
    myRepeater.DataSource = new Object[0];
    myRepeater.DataBind();
}

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    DataGrid dg = (DataGrid)e.Item.FindControl("myDataGrid");
    object o = e.Item.DataItem;// Cast the DataItem as whatever 
                               // your Repeater's DataSource is

    // ...
    // Do whatever you need to get the 
    // data source for your DataGrid here
    // ...

    dg.DataSource = DataGridSourceObjectHere;
    dg.DataBind();
}

キーはリピーターの < code> ItemDataBound イベント。リピーター行が作成されるたびに呼び出されるメソッドです。ここで、DataGridソースをデータバインドできます。 RepeaterItemEventArgs パラメーターを使用して、リピーターにバインドしたデータ項目にアクセスします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top