ASP.NET后台获取用户控件ID

ASP.NET后台获取用户控件ID,第1张

可以为UserControl定义一个public 属性

public TextBox TextBoxA

{

get{reurn thistextBox1;}

}

另一种,如果知道这个TextBox的ID

也可以在UserControl上调用FindControl来得到TextBox对象。

method属性浏览器使用method属性设置的方法将表单中的数据传送给服务器进行处理。共有两种方法:POST方法和GET方法。如果采用POST方法,浏览器将会按照下面两步来发送数据。首先,浏览器将与action属性中指定的表单处理服务器建立联系,一旦建立连接之后,浏览器就会按分段传输的方法将数据发送给服务器。在服务器端,一旦POST样式的应用程序开始执行时,就应该从一个标志位置读取参数,而一旦读到参数,在应用程序能够使用这些表单值以前,必须对这些参数进行解码。用户特定的服务器会明确指定应用程序应该如何接受这些参数。另一种情况是采用GET方法,这时浏览器会与表单处理服务器建立连接,然后直接在一个传输步骤中发送所有的表单数据:浏览器会将数据直接附在表单的actionURL之后。这两者之间用问号进行分隔。一般浏览器通过上述任何一种方法都可以传输表单信息,而有些服务器只接受其中一种方法提供的数据。可以在标签的method(方法)属性中指明表单处理服务器要用方法来处理数据,使POST还是GET。后台取值的时候应该没有什么区别

使用FindControl('控件id')获取控件

该方法适用于以父容器为目标查找其内在中的子控件对象

比如查找GridView中行下的一个控件

protected void GridView1_ItemCommand(object source,

GridViewCommandEventArgs e)

{

Label l;

l = (Label) eItemFindControl("Label1");

if(!(l == null) ){

LabelTextText = lText;

}

}

补充:

看到你的这个问题补充,我个人觉得首先你设计的这个思路就有问题,子类继承了父类,那么子类是可知父类属性的,但是父类是不可能得到子类属性的。什么叫做继承?这个概念题主了解么?

一个id只能唯一标示一个控件,一个name可以被多个控件共用

在aspnet中,服务器控件必须要使用id,而不一定需要name

但是当提交表单的时候,服务器只能根据控件的name读取相应控件的数据

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

{

get{return(name);}

set{name = value;}

}

// <summary>

// 定义控件的属性DataField

// </summary>

private string dataField;

public string DataField

{

get{return dataField;}

set{dataField=value;}

}

// <summary>

// 定义控件的属性AutoPostback

// </summary>

private bool autoPostBack = false;

public bool AutoPostBack

{

set{autoPostBack = value;}

get{return 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

{

set{viewItem AutoPostBack = value;editItem AutoPostBack = value;}

get{return viewItem AutoPostBack;}

}

// <summary>

// 定义控件的DataField属性

// </summary>

public string DataField

{

get{return viewItem DataField;}

set{viewItem DataField = value;editItem DataField = value;}

}

// <summary>

// 定义控件的viewItem

// </summary>

private CheckBoxItem viewItem;

// <summary>

// 定义控件的editItem

// </summary>

private CheckBoxItem editItem;

}

.设计页面TestCheckBox aspx

lishixinzhi/Article/program/ASP/201311/21761

以上就是关于ASP.NET后台获取用户控件ID全部的内容,包括:ASP.NET后台获取用户控件ID、asp.net中如何获得form提交来的所有数据【不能使用form["xxx"]的形式,因为事先不知道表单中控件name】、asp.net 根据id得到控件,请问你是怎么解决该问题的,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9349052.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存