0

GridView を使用して、dataBase からデータを表示しています。gridView は objectDataSource にバインドされています。gridview の各行はユーザーに属するアイテムを表し、ユーザーの詳細を表示する別のフィールドを gridView に追加したいと考えています (実際にはデータベースの別のテーブルにあります)。

それを行う最善の方法がわからないので、GridView に DetailView を含む TemplateField を追加して、それを別の objectdatasource にバインドしようとしましたが、特定のフィールドからパラメーターを取得する方法がわかりません行 (userID フィールド)。

どんな提案でも大歓迎です...

4

1 に答える 1

1

それよりも少しトリッキーになります。userID をデータ キーとして設定し、GridView の RowDataBound イベントで詳細ビューをバインドできます。

<asp:GridView ID="GridView1" runat="server" DataKeyNames="UserID" OnRowDataBound="GridView1_RowDataBound">

そしてコードビハインドで:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //get the data key
    int userID = (int)GridView1.DataKeys[e.Row.RowIndex]["UserID"];

    //get the nested details view control
    DetailsView dv = (DetailsView)e.Row.FindControl("DetailsView1");

    dv.DataSource = GetUserDetailsTable(userID); //your data source
    dv.DataBind();
}
于 2011-08-15T15:31:51.947 に答える