2009-09-20 50 views
0

我有一個數據列表,並希望從表中獲取行名,我從數據列表中獲取我的值。下面是我想要做的一個例子。在DataList中獲取行的名稱

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

你是指列名? – Canavar 2009-09-20 22:01:03

回答

0

如果您正在使用數據表作爲數據源爲您的數據列表,你可以使用OnItemCreated方法,並提供一個自定義的處理程序ItemCreated事件中加入列標題值。我不確定你爲什麼想要這樣做。這聽起來像是RepeaterGridView可能更適合您的需求。無論如何,這裏是代碼。

<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); 
      } 
     } 
    } 
0

你可以做以下事情,但我懷疑它會起作用。我不相信創建標題時DataItems可用。

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

如果這樣工作,您可以遍歷這個集合並檢查每個項目的ColumnName屬性。

一個更好的想法是將兩種:

  1. 創建代碼隱藏返回適當的列標題的List<string>的屬性。當您聲明標題時,您可以在標記中引用此屬性。
  2. 爲ItemDataBound事件和陷阱標題創建添加處理程序。您仍然需要一種方式來引用數據元素,這些數據元素可能尚未在此刻準備好。