我有一个数据列表,并希望从表格中提取我从数据列表中获取值的行名称。这是我想做的一个例子。
<HeaderTemplate>
'Get data row names
'Maybe something like Container.DataItem(row)?
</HeaderTemplate>
答案 0 :(得分:0)
您可以执行以下操作,但我怀疑它是否有效。我不相信DataItems在创建Header时可用。
((DataRowView)Container.DataItem).DataView.Table.Columns
如果这样做,您可以遍历此集合并检查每个项目的ColumnName属性。
更好的想法是:
List<string>
个适当列标题的属性。当您声明标题时,可以在标记中引用此属性。答案 1 :(得分:0)
如果您使用DataTable作为数据列表的数据源,则可以使用OnItemCreated
方法并为ItemCreated
事件提供自定义处理程序以添加列标题值。我不确定你为什么要这样做。听起来Repeater或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);
}
}
}