1

私はAsp.netが初めてで、これを行う方法を探しましたが、見つけることができませんでした.

コードビハインドから完全に詳細ビューを作成したいと思います。これは、ユーザーのアクセス許可に基づいて特定のフィールドを読み込む必要があるためです。また、詳細ビューを編集して、特定のユーザーのみがアクセスできるようにしたいと考えています。これを行う方法はありますか?

4

2 に答える 2

2

これは、プログラムによる 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);

    }

テンプレート フィールドを追加するためのクラス ファイル コード。<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();
    }

}

InsertItemTemplateORも追加する必要がある場合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を読んでください。

于 2013-08-18T04:01:25.817 に答える