Это очень простая реализация DetailsView программно. Это поможет вам начать.
protected void Page_Load(object sender, EventArgs e)
{
DetailsView dv = new DetailsView();
dv.ID = "MyDv";
dv.DataSource = GetDataSet(); // returns a dataset filled using Select Query
TemplateField tf = new TemplateField();
tf.ItemTemplate = new AddTemplateToDetailsView(ListItemType.Item);
dv.Fields.Add(tf);
dv.DataBind();
placeholder1.Controls.Add(dv);
}
Код файла класса для добавления TemlplateField. <asp:TemplateField>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;
using System.Data;
public class AddTemplateToDetailsView : ITemplate
{
private ListItemType _ListItemType;
public AddTemplateToDetailsView(ListItemType listItemType)
{
_ListItemType = listItemType;
}
public void InstantiateIn(System.Web.UI.Control container)
{
if (_ListItemType == ListItemType.Item)
{
Label lblID = new Label();
lblID.DataBinding += new EventHandler(lblID_DataBinding);
container.Controls.Add(lblID);
}
}
void lblID_DataBinding(object sender, EventArgs e)
{
Label lblID = (Label)sender;
DetailsView container = (DetailsView)lblID.NamingContainer;
lblID.Text = ((DataRowView)container.DataItem)["CustomerID"].ToString();
}
}
В случае, если вы также должны добавить InsertItemTemplate
ИЛИ EditItemTemplate
, Вы можете создать UserControls для того же и добавить те, в Page_Init()
, как показано ниже. UserControl должен наследовать ITemplate
.
protected void Page_Init(object sender, EventArgs e)
{
this.DetailsView1.EditItemTemplate = Page.LoadTemplate("UserControlEdit.ascx");
this.DetailsView1.InsertItemTemplate = Page.LoadTemplate("UserControlInsert.ascx");
}
Прочитано MSDN here.
Вы используете Webforms или MVC? Если вы не используете MVC, запустите. –
Зачем вам нужно создавать его в коде? Почему бы просто не создать нормальный образ и не скрыть его или показать его на основе прав пользователей, а затем просто добавить элементы управления динамически. –
@ Daniel Mann Я использую webforms. Я подумал, что это лучше всего, так как я все еще учусь, прежде чем перейти на MVC. Это неправильно? Является ли MVC лучше этого типа? – Cineno28