从codebehind创建DetailsView控件 [英] Create DetailsView from codebehind

查看:75
本文介绍了从codebehind创建DetailsView控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来Asp.net并四处寻找如何做到这一点,但一直没能找到它。

I'm new to Asp.net and have looked around for how to do this, but haven't been able to find it.

我想从codebehind完全创造一个DetailsView。这是因为我需要某些字段根据用户的权限来加载。另外,我想编辑DetailsView控件是仅对特定用户访问的能力。有没有办法做到这一点?

I would like to create a detailsview entirely from codebehind. This is because I need certain fields to load based on the user's permissions. Also, I would like the ability to edit the detailsview to be only accessible to certain users. Is there a way to do this?

推荐答案

这是DetailsView控件的一个非常基本的编程implementatation。这将让你开始。

This is a very basic implementatation of DetailsView programmatically. This will get you started.

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

    }

类文件code以添加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();
    }

}

在情况下,你还需要添加 InsertTemplate则 EditItemTemplate中,您可以创建相同的用户控件,并添加这些在 Page_Init()如下。该用户控件必须继承了Itemplate

In case you also need to add InsertItemTemplate OR EditItemTemplate, You can create UserControls for the same and add those in Page_Init() as below. The UserControl must Inherit ITemplate .

protected void Page_Init(object sender, EventArgs e)
{
this.DetailsView1.EditItemTemplate = Page.LoadTemplate("UserControlEdit.ascx");
this.DetailsView1.InsertItemTemplate = Page.LoadTemplate("UserControlInsert.ascx");
}

这里阅读 MSDN。

Read MSDN here .

这篇关于从codebehind创建DetailsView控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆