0

データリストがあり、データリストの値を取得しているテーブルから行名を取得したいと考えています。これが私がやりたいことの例です。

<HeaderTemplate>
    'Get data row names
'Maybe something like Container.DataItem(row)?
    </HeaderTemplate>
4

2 に答える 2

0

データリストのデータソースとしてDataTableを使用している場合は、OnItemCreatedメソッドを使用して、イベントのカスタムハンドラーを提供しItemCreated、列ヘッダー値を追加できます。なぜあなたがこれをしたいかわかりません。リピーターまたはGridViewがニーズに適しているようです。とにかく、ここにコードがあります。

<asp:DataList ID="DataList1" runat="server" OnItemCreated="DataList1_ItemCreated"
            ShowHeader="true" >
        <HeaderTemplate>
        </HeaderTemplate>
        </asp:DataList>

protected void Page_Load(object sender, EventArgs e)
    {  
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()))
        {
            conn.Open();
            SqlCommand comm = new SqlCommand("SELECT [id], [name], [email], [street], [city] FROM [employee_tbl]", conn);
            SqlDataAdapter da = new SqlDataAdapter(comm);
            da.Fill(dt);
        }
        DataList1.DataSource = dt;
        DataList1.DataBind();
    }

  protected void DataList1_ItemCreated(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            foreach (DataColumn col in dt.Columns)
            {
                Literal lit = new Literal();
                lit.Text = col.ColumnName;
                e.Item.Controls.Add(lit);
            }
        }
    }
于 2009-09-21T00:34:44.373 に答える
0

次のことができますが、うまくいくとは思えません。ヘッダーが作成されている時点で DataItems を使用できるとは思いません。

((DataRowView)Container.DataItem).DataView.Table.Columns

これが機能する場合は、このコレクションをループして、各項目の ColumnName プロパティを調べることができます。

より良いアイデアは、次のいずれかです。

  1. List<string>適切な列ヘッダーを返す分離コードでプロパティを作成します。ヘッダーを宣言するときに、マークアップでこのプロパティを参照できます。
  2. ItemDataBound イベントのハンドラーを追加し、ヘッダーの作成をトラップします。データ要素を参照する方法がまだ必要ですが、この時点ではまだ準備されていない可能性があります。
于 2009-09-20T22:26:48.050 に答える