知识大全 使用ASP.Net中的自定义控件

Posted 属性

篇首语:恐惧自己受苦的人,已经因为自己的恐惧在受苦。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用ASP.Net中的自定义控件相关的知识,希望对你有一定的参考价值。

使用ASP.Net中的自定义控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  if(( data == True )||(data == true ))box Checked = true;

  break;

  default:break;

  

  

  

  // <summary>

  // 定义控件的属性readOnly

  // </summary>

  private bool readOnly = true;

  

  类CheckBoxColumn继承于模板列TemplateColumn 它实现DataGrid控件中仅包含CheckBox控件的模板列CheckBoxColumn 模板列CheckBoxColumn实现两种模板列 即只读的模板列和可编辑的模板列 它们分别由构造函数CheckBoxColumn(String Name)和CheckBoxColumn(bool Immediate Postback String Name)实现 类CheckBoxColumn中的构造函数都创建一个子项CheckBoxItem 并根据模板列的属性设置子项的名称和是否为只读属性 类CheckBoxColumn还定义了子项的事件CheckedChanged 该事件在子项中的控件CheckBox的选择项改变时触发 类 CheckBoxColumn定义了回传属性AutoPostBack 数据域属性DataField 类CheckBoxColumn的程序代码如下

  public class CheckBoxColumn :System Web UI WebControls TemplateColumn

  

  // <summary>

  // 初始化CheckBoxColumn

  // </summary>

  public CheckBoxColumn(String Name)

  

  //设置控件为只读

  viewItem = new CheckBoxItem(false Name); // SAW was false

  this ItemTemplate = viewItem as ITemplate;

  //设置控件为可编辑的

  editItem = new CheckBoxItem(true Name);

  this EditItemTemplate = editItem as ITemplate;

  

  // <summary>

  // 初始化CheckBoxColumn 并设置控件的回传属性

  // </summary>

  public CheckBoxColumn(bool ImmediatePostback String Name)

  

  //设置控件为只读

  viewItem = new CheckBoxItem(ImmediatePostback Name);

  this ItemTemplate = viewItem as ITemplate;

  //设置控件为可编辑的

  editItem = new CheckBoxItem(true Name);

  this EditItemTemplate = editItem as ITemplate;

  AutoPostBack = ImmediatePostback;

  

  // <summary>

  // 设置控件CheckBoxColumn的事件

  // </summary>

[NextPage]

  函数GetString(DataGridItem container Label CheckMsg String Name)用来获取控件myDataGrid中被选择的子项显示的文本 并把获取的文本添加到控件CheckMsg的属性Text中 函数GetString (DataGridItem container Label CheckMsg String Name)的程序代码如下

  private void GetString(DataGridItem container Label CheckMsg String Name)

   //获取单个列的值

  Label tempLabel = (Label)container FindControl(Name);

  if(tempLabel != null)

   //设置控件CheckMsg的Text属性的值

  CheckMsg Text += tempLabel Text;

  

  

  运行效果

  ( )设置页面TestCheckBox aspx为应用程序的起始页面 按F 键运行 出现如图 所示的初始界面

  

  图 页面TestCheckBox aspx的初始界面

  ( )单击页面TestCheckBox aspx中的【显示消息】按钮获取并显示myDataGrid控件中被选择的子项中的所有文本 此时页面TestCheckBox aspx如图 所示

  

  图 显示myDataGrid控件中被选择的子项中的所有文本

  ( )单击页面TestCheckBox aspx中的myDataGrid控件中的第 个CheckBox控件 则控件CheckMsg显示myDataGrid控件中该子项的所有显示的文本 如图 所示

  

[NextPage]

  row[column] = (i % == ) ? true:false;

  

  else

   //添加其他列的数据

  row[column] = column ColumnName + i ToString();

  

  

  dataTable Rows Add(row);

  

  //返回创建的数据表

  return(dataTable);

  

  单击myDataGrid控件中的CheckBox控件触发事件checkCol_CheckedChanged(object sender EventArgs e) 该事件首先获取myDataGrid控件当前子项显示的文本 最后使用Label控件CheckMsg显示获取的文本 事件checkCol_CheckedChanged(object sender EventArgs e)的程序代码如下

  private void checkCol_CheckedChanged(object sender EventArgs e)

  

  //设置CheckBox控件的事件

  CheckMsg Text = ;

  CheckBox box = (CheckBox) sender;

  if(box Checked == true)

  

  //获取选择的CheckBox控件所在的DataGridItem

  DataGridItem container = (DataGridItem) box NamingContainer;

  //获取每列的值

  GetString(container CheckMsg Name );

  GetString(container CheckMsg Type );

  GetString(container CheckMsg Data );

  

  

  单击页面TestCheckBox aspx中的【显示消息】按钮触发事件ShowMsg_Click(object sender System EventArgs e) 该事件用来获取myDataGrid控件中被选择的子项中的所有文本 并使用Label控件CheckMsg显示获取的文本 事件 ShowMsg_Click(object sender System EventArgs e)的程序代码如下

  private void ShowMsg_Click(object sender System EventArgs e)

  

  CheckMsg Text = ;

  foreach(DataGridItem container in myDataGrid Items)

   //获取每列的值

  CheckBox cBox = (CheckBox)container FindControl( MyBox );

  if(cBox != null)

  

  if(cBox Checked == true)

   //获取选中列的值

  GetString(container CheckMsg Name );

  GetString(container CheckMsg Type );

  GetString(container CheckMsg Data );

  

  

  

  

[NextPage]

  // <summary>

  // 设置控件的事件OnCheckChanged

  // </summary>

  private void OnCheckChanged(object sender EventArgs e)

  

  if (CheckedChanged != null)CheckedChanged(sender e);

  

  // <summary>

  //定义控件的属性Name

  // </summary>

  private string name;

  public string Name

  

  getreturn(name);

  setname = value;

  

  // <summary>

  // 定义控件的属性DataField

  // </summary>

  private string dataField;

  public string DataField

  

  getreturn dataField;

  setdataField=value;

  

  // <summary>

  // 定义控件的属性AutoPostback

  // </summary>

  private bool autoPostBack = false;

  public bool AutoPostBack

  

  setautoPostBack = value;

  getreturn autoPostBack;

  

  // <summary>

  // 定义控件的数据绑定函数BindData()

  // </summary>

  private void BindData(object sender EventArgs e)

  

  //找到CheckBox控件

  CheckBox box = (CheckBox) sender;

  DataGridItem container = (DataGridItem) box NamingContainer;

  box Checked = false;

  box Enabled = (readOnly == true) ? false:true;

  //获取数据

  string data =

  ((DataRowView) container DataItem)[dataField] ToString();

  //获取数据类型

  Type t = ((DataRowView)container DataItem) DataView Table Columns[

  dataField] DataType;

  if (data Length> )

  

  switch (t ToString())

   //设置控件的值

  case System Boolean :

[NextPage]

  ——此文章摘自《ASP NET网络数据库开发实例精解》定价 ¥ 特价 ¥ 详细>>

  控件myDataGrid用来显示数据 控件ShowMsg用来获取DataGrid控件中被选择的子项中的所有文本 控件CheckMsg用来显示控件ShowMsg获取的文本 页面TestCheckBox aspx的设计界面如 图 所示

  

  图 页面TestCheckBox aspx的设计界面

  页面TestCheckBox aspx的HTML设计代码如下

  <%@ Page language= c# Codebehind= TestCheckBox aspx cs

  AutoEventWireup= false Inherits= Example_ _ TestCheckBox %>  AutoEventWireup= false Inherits= Example_ _ TestCheckBox %>

  <HTML><HEAD><title>Example_ _ 使用ASP NET中的自定义控件</title></HEAD>

  <asp:DataGrid id= myDataGrid runat= server

  AutoGenerateColumns= False >  AutoGenerateColumns= False >

  <Columns>

  <asp:TemplateColumn HeaderText= 名称 ><ItemTemplate>

  <asp:Label ID= Name Runat= server Text= <%#

  DataBinder Eval(Container DataItem Name ) %> >

  </asp:Label>

  </ItemTemplate></asp:TemplateColumn>

  <asp:TemplateColumn HeaderText= 类型 ><ItemTemplate>

  <asp:Label ID= Type Runat= server Text= <%#

  DataBinder Eval(Container DataItem Type ) %> >

  </asp:Label>

  </ItemTemplate></asp:TemplateColumn>

  <asp:TemplateColumn HeaderText= 数据 ><ItemTemplate>

  <asp:Label ID= Data Runat= server Text= <%#

  DataBinder Eval(Container DataItem Data ) %> >

  </asp:Label>

  </ItemTemplate></asp:TemplateColumn>

  </Columns>

  </asp:DataGrid>

  <asp:Button id= ShowMsg runat= server Text= 显示消息 ></asp:Button>

  <asp:Label id= CheckMsg runat= server Width= %

  ForeColor= Red >  ForeColor= Red ></asp:Label>

  </HTML>

[NextPage]

  自定义控件是ASP NET中很重要的一部分 使用它可以提高程序代码的重用性 即一个自定义控件在网页 自定义控件或控件的内部都可以再次使用 本实例创建的复选框控件列CheckBoxColumn自定义控件也可以在网站的任何地方再次使用

  本实例介绍如何在ASP NET中创建自定义控件 如何使用自定义控件 以及如何在自定义控件中定义公开属性和方法的实现方法

   .创建新ASP NET应用程序

  在Visual Studio NET 集成开发环境中创建新的ASP NET Web应用程序 命名为Example_ _

   .创建自定义控件CheckBoxColumn

  在应用程序Example_ _ 中添加文件CheckItem cs和文件 CheckColumn cs 其中第一个文件定义类CheckBoxItem实现CheckBox控件 第二个文件定义类CheckBoxColumn 实现DataGrid控件中的CheckBoxColumn列 类CheckBoxItem继承于接口ITemplate 并在其中定义了标识控件名称的属性Name 标识控件数据域的属性DataField 标识控件是否为只读的属性ReadOnly 标识控件是否提交回传的属性 AutoPostBack和绑定控件数据的事件BindData() 当控件的选择项改变时触发的事件OnCheckChanged等 类 CheckBoxItem的程序代码如下

  internal class CheckBoxItem : ITemplate

  

  // <summary>

  // CheckBoxItem的构造函数

  // </summary>

  // <param name= editable >控件是否为可编辑</param>

  public CheckBoxItem(bool editable string Name)

  

  name = Name;

  readOnly = (editable==true)?false:true;

  

  // <summary>

  // 实例化CheckBox控件 并添加到容器中

  // </summary>

  // <param name= container >添加控件的容器</param>

  void ITemplate InstantiateIn(Control container)

  

  //创建CheckBox控件

  CheckBox box = new CheckBox();

  //设置控件的属性和事件

  box ID = name;

  box DataBinding += new EventHandler(this BindData);

  box AutoPostBack = autoPostBack;

  box CheckedChanged += new EventHandler(this OnCheckChanged);

  container Controls Add(box);

  

  // <summary>

  //定义控件的事件CheckChanged

  // </summary>

  public event EventHandler CheckedChanged;

[NextPage]

   .设计页面TestCheckBox aspx的事件和函数

  页面TestCheckBox aspx调用函数Page_Load(object sender System EventArgs e)初始化 该函数调用函数AddColumnToDataGrid()和函数BindData()分别实现在myDataGrid控件添加一个 CheckBoxColumn模板列和绑定myDataGrid控件的数据 函数AddColumnToDataGrid()在创建一个 CheckBoxColumn模板列时 同时还设置该模板列的属性DataField 属性HeaderText 以及CheckBox控件的事件 CheckedChanged 函数Page_Load(object sender System EventArgs e) AddColumnToData Grid()和BindData()的程序代码如下

  private void Page_Load(object sender System EventArgs e)

  

  AddColumnToDataGrid();

  BindData();

  

  private void AddColumnToDataGrid()

   //添加一列复选框

  CheckBoxColumn checkCol = new CheckBoxColumn(true MyBox );

  checkCol DataField = Boolean ;

  checkCol HeaderText = 复选框 ;

  //添加复选框的事件

  checkCol CheckedChanged += new EventHandler(checkCol_CheckedChanged);

  //添加到myDataGrid控件中

  myDataGrid Columns Add(checkCol);

  

  private void BindData()

  

  //绑定myDataGrid控件的数据

  myDataGrid DataSource = CreateDataSource();

  myDataGrid DataBind();

  

  函数BindData()调用函数CreateDataSource()创建myDataGrid控件的数据源dataTable 函数CreateDataSource()首先定义数据表对象dataTable 并在dataTable对象中添加 个数据列 DataColumn 它们分别为 Name Type Data 和 Boolean 分别表示名称 类型 数据和布尔型数据 然后函数 CreateDataSource()通过for语句设置表对象dataTable中的数据 函数CreateDataSource()的程序代码如下

  private DataTable CreateDataSource()

  

  //创建数据表及其列

  DataTable dataTable = new DataTable( MyData );

  dataTable Columns Add(new DataColumn( Name typeof(string)));

  dataTable Columns Add(new DataColumn( Type typeof(string)));

  dataTable Columns Add(new DataColumn( Data typeof(string)));

  dataTable Columns Add(new DataColumn( Boolean typeof(bool)));

  //添加五行数据

  for(int i = ; i < ; i++)

   //添加一行数据

  DataRow row = dataTable NewRow();

  foreach(DataColumn column in dataTable Columns)

   //添加CheckBox控件的数据

  if(column DataType == typeof(bool))

  

[NextPage]

  ——此文章摘自《ASP NET网络数据库开发实例精解》定价 ¥ 特价 ¥ 详细>>

  public event EventHandler CheckedChanged

  

  add

   //添加事件

  viewItem CheckedChanged += value;

  editItem CheckedChanged += value;

  

  remove

   //移除事件

  viewItem CheckedChanged = value;

  editItem CheckedChanged = value;

  

  

  // <summary>

  // 定义控件的AutoPostBack属性

  // </summary>

  public bool AutoPostBack

  

  setviewItem AutoPostBack = value;editItem AutoPostBack = value;

  getreturn viewItem AutoPostBack;

  

  // <summary>

  // 定义控件的DataField属性

  // </summary>

  public string DataField

  

  getreturn viewItem DataField;

  setviewItem DataField = value;editItem DataField = value;

  

  // <summary>

  // 定义控件的viewItem

  // </summary>

  private CheckBoxItem viewItem;

  // <summary>

  // 定义控件的editItem

  // </summary>

  private CheckBoxItem editItem;

  

   .设计页面TestCheckBox aspx

cha138/Article/program/ASP/201311/21761

相关参考

知识大全 使用ASP.Net中的自定义控件[5]

使用ASP.Net中的自定义控件[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[2]

使用ASP.Net中的自定义控件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[7]

使用ASP.Net中的自定义控件[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[3]

使用ASP.Net中的自定义控件[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[8]

使用ASP.Net中的自定义控件[8]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[1]

使用ASP.Net中的自定义控件[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[6]

使用ASP.Net中的自定义控件[6]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 Asp.net中DataGrid控件的自定义分页

Asp.net中DataGrid控件的自定义分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET 中的自定义脚本回调

ASP.NET中的自定义脚本回调  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET客户

知识大全 基于ASP.NET的自定义分页显示[1]

基于ASP.NET的自定义分页显示[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言