前台aspx页面关键代码:
<form id="form1" runat="server">
<table id="Table1" border="1" runat="server" >
<tr>
<td>
</td>
</tr>
</table>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</form>
后台cs文件按钮单击事件处理程序:
protected void Button1_Click(object sender, EventArgs e)
{
Button bt=new Button()
bt.Text = "新按钮"
Table1.Rows[1].Cells[1].Controls.Add(bt)
}
效果如你要求,请根据具体情况自行扩展
那个Button是控件,你可以添加HTMLbutton控件,<input type="button" id="btn" value="button"/>
或者服务器控件
<asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" />
或者你可以通过一些网页编辑软件DW,或者微软的visual studio在设计模式下直接拖到你想要的位置
下面是一些参考
asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等。这里我主要说说html控件、html服务器控件和web服务器控件的区别。
1、html控件:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascript和vbscript等程序语言来控制。<input type="button" id="btn" value="button"/>
2、html服务器控件:其实就是html控件的基础上加上runat="server"所构成的控件.它们的注意区别是运行方式不同,html控件运行在客户端,而html服务器控件是运行在服务器端的。参考其他资料是这样说的: 当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html标注有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释<input id="Button" type="button" value="button" runat="server" />
3、web服务器控件:也称asp.net服务器控件,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。如: <asp:Button ID="Button2" runat="server" Text="Button"/>那么它和html服务器控件有什么区别呢?参照其他网页的资料看法如下:
1)、Asp.net服务器控件提供更加统一的编程接口,如每个Asp.net服务器控件都有Text属性。
2)、隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。
3)、Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
4)、事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上,举例来说:
<input id="Button4" type="button" value="button" runat="server"/>是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
<input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。
<asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。
4、下面我就结合我自己的测试来说明问题:
这段代码是我放在repeat中的模板里的:其中DeleteCheck是一个js脚本函数,注意是用于是否发送到服务器端的,这里就不展示脚本代码了。
<input runat="server" type="button" id="delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" />
展现出来的html代码如下:
<input name="Data$ctl03$delete" type="button" id="Data_ctl03_delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input name="Data$ctl03$Button2" type="submit" id="Data_ctl03_Button2" onclick="return DeleteCheck(this)" value="Server submit" / >
<input ut type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button id="Data_ctl03_button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<input type="submit" name="Data$ctl03$button5" value="Asp:button" onclick="return DeleteCheck(this)" id="Data_ctl03_button5" />
可以看出以下几点:
1、当控件属性中有runat="server"时,生成的html控件时name和id发生的变化(.net Framework)。
2、当asp:button服务器按钮通过生成的页面后转化成类型为submit类型的Client控件。
3、当控件是html控件时通过生成的页面和原来的html代码完全一样(理由上面已经说名)。
另外我还测试了把这段代码直接放到form标记中(不放到其他子标记中)如:
<input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" OnClick="button5_Click" />
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>直接放到form标记中生成的html代码
<script type="text/javascript">
<!--
var theForm = document.forms['form1']
if (!theForm) {
theForm = document.form1
}
function __doPostBack(eventTarget, eventArgument) {
i f (!theForm.onsubmit (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget
theForm.__EVENTARGUMENT.value = eventArgument
theForm.submit()
}
}
// -->
</script>
<input language="javascript" onclick="__doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input name="Button2" type="submit" id="Button2" onclick="return DeleteCheck(this)" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<input type="submit" name="button5" value="Asp:button" onclick="return DeleteCheck(this)" id="button5" />
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
这里有可以看出几点:
1、当html服务器控件在服务器端添加了服务器事件后生成的代码变为:onclick="_doPostBack()",实际上是调用脚本把整个窗体提交到服务器(如果没有添件服务器事件而只是添加了runat="server"是不会发送到服务器端的)这里注意如果要在html服务器控件中添加一个客户端事件如上面的 <input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />变成 <input runat="server" type="button" id="delete" value="Server button" onclick="return DeleteCheck(this)" onserverclick="delete_ServerClick" />那样生成的html代码变成 <input language="javascript" onclick="return DeleteCheck(this) __doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />提示有脚本错误原因是onclick事件执行了2个脚本且书写的格式不正确。onclick="return DeleteCheck(this);_doPostBack()"这样的话就只能执行第一个函数而第二个函数就不能执行了(return).如果用onclick="return DeleteCheck(this),_doPostback()"是指2个函数同时都要执行没有影响(相当于一条语句)。在我的一个项目中需要对于控件进行区分总结,我在网上找了找加上自己的实际测试总结如下:
asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等。这里我主要说说html控件、html服务器控件和web服务器控件的区别。
1、html控件:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascript和vbscript等程序语言来控制。<input type="button" id="btn" value="button"/>
2、html服务器控件:其实就是html控件的基础上加上runat="server"所构成的控件.它们的注意区别是运行方式不同,html控件运行在客户端,而html服务器控件是运行在服务器端的。参考其他资料是这样说的: 当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html标注有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释<input id="Button" type="button" value="button" runat="server" />
3、web服务器控件:也称asp.net服务器控件,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。如: <asp:Button ID="Button2" runat="server" Text="Button"/>那么它和html服务器控件有什么区别呢?参照其他网页的资料看法如下:
1)、 Asp.net服务器控件提供更加统一的编程接口,如每个Asp.net服务器控件都有Text属性。
2)、 隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。
3)、 Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
4)、 事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上,举例来说:
<input id="Button4" type="button" value="button" runat="server"/>是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
<input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。
<asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。
4、下面我就结合我自己的测试来说明问题:
这段代码是我放在repeat中的模板里的:其中DeleteCheck是一个js脚本函数,注意是用于是否发送到服务器端的,这里就不展示脚本代码了。
<input runat="server" type="button" id="delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" />
展现出来的html代码如下:
<input name="Data$ctl03$delete" type="button" id="Data_ctl03_delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input name="Data$ctl03$Button2" type="submit" id="Data_ctl03_Button2" onclick="return DeleteCheck(this)" value="Server submit" / >
<input ut type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button id="Data_ctl03_button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<input type="submit" name="Data$ctl03$button5" value="Asp:button" onclick="return DeleteCheck(this)" id="Data_ctl03_button5" />
可以看出以下几点:
1、当控件属性中有runat="server"时,生成的html控件时name和id发生的变化(.net Framework)。
2、当asp:button服务器按钮通过生成的页面后转化成类型为submit类型的Client控件。
3、当控件是html控件时通过生成的页面和原来的html代码完全一样(理由上面已经说名)。
另外我还测试了把这段代码直接放到form标记中(不放到其他子标记中)
如: <input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" OnClick="button5_Click" />
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>直接放到form标记中生成的html代码
<script type="text/javascript">
<!--
var theForm = document.forms['form1']
if (!theForm) {
theForm = document.form1
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget
theForm.__EVENTARGUMENT.value = eventArgument
theForm.submit()
}
}
// -->
</script>
<input language="javascript" onclick="__doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />
<input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />
<input name="Button2" type="submit" id="Button2" onclick="return DeleteCheck(this)" value="Server submit" />
<input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />
<button id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button</button>
<input type="submit" name="button5" value="Asp:button" onclick="return DeleteCheck(this)" id="button5" />
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
这里有可以看出几点:
1、当html服务器控件在服务器端添加了服务器事件后生成的代码变为:onclick="_doPostBack()",实际上是调用脚本把整个窗体提交到服务器(如果没有添件服务器事件而只是添加了runat="server"是不会发送到服务器端的)这里注意如果要在html服务器控件中添加一个客户端事件如上面的 <input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />
变成 <input runat="server" type="button" id="delete" value="Server button" onclick="return DeleteCheck(this)" onserverclick="delete_ServerClick" />
那样生成的html代码变成 <input language="javascript" onclick="return DeleteCheck(this) __doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />提示有脚本错误原因是onclick事件执行了2个脚本且书写的格式不正确。onclick="return DeleteCheck(this);_doPostBack()"这样的话就只能执行第一个函数而第二个函数就不能执行了(return).如果用onclick="return DeleteCheck(this),_doPostback()"是指2个函数同时都要执行没有影响(相当于一条语句)。
2、asp:button中的onclientclick事件生成后就变成了onclick事件了,类型变成了type="submit".然而服务器事件的onclick我想是通过发送到服务器端执行的。
3、LinkButton不定义onclick事件,它会自动的生成下面代码发送到服务器端。 href="javascript:__doPostBack('LinkButton1',' ')"
4、asp:button中的onclientclick事件生成后就变成了onclick事件了,类型变成了type="submit".然而服务器事件的onclick我想是通过发送到服务器端执行的。
表示超链接的起始或目的位置。acronym
表示取首字母的缩写词。
address
表示特定信息,如地址、签名、作者、文档信息。
applet
在页面上放置可执行内容。
area
定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。
b
指定文本应以粗体显示。(不建议使用)
base
指定一个显式 URL 用于解析对于外部源的链接和引用,如图像和样式表。
basefont
设置显示文本时作为默认字体的基础字体值。(不建议使用)
bdo
允许作者为选定文本片断禁用双向法则。
bgsound
使页面能够带有背景声音或配音。
big
指定所含文本要以比当前字体稍大的字体显示。
blockquote
表示文本中的一段引用语。
body
指明文档主体的开始和结束。
br
插入一个换行符。
button
指定一个容器,其中所含的 HTML 会被显示为一个按钮。
caption
表格的标题,对表格的简单描述。
center
将指定文本和图像居中显示。(不建议使用)
cite
用斜体显示标明引文。(不建议使用)
code
表示代码范例。
col
说明基于列的表格缺省属性。
colgroup
说明表格中一列或一组列的缺省属性。
comment
表示不可见的注释。防止所包含的文本或者HTML源代码被浏览器解析和显示。
dd
在定义列表中表示定义。定义通常在定义列表中缩进显示。
del
表示文本已经从文档中删除。
dfn
表示术语的定义。(不建议使用)
dir
表示目录列表。(不建议使用)
div
表示一块可显示 HTML 的区域
dl
表示定义列表。
dt
在定义列表中表示定义术语。
em
强调文本,通常以斜体显示。
embed
允许嵌入任何类型的文档。
fieldset
在字段集包含的文本和其它元素外面画一个方框。
font
用于说明所包含文本的新字体、大小和颜色。
form
说明所包含的控件是某个表单的组成部分。
frame
在 FRAMESET 元素内表示单个框架。
frameset
表示一个框架集,用于组织多个框架和嵌套框架集。
head
提供了关于文档的无序信息集合。
h1-h6
这实际上是6个标签,他们以标题样式显示文本,h1最大,h6最小。
hr
水平线。
html
表明文档包含 HTML 元素。
i
指定文本应以斜体显示。(不建议使用)
iframe
创建内嵌漂浮框架。
img
在文档中嵌入图像或视频片断。
input
创建各种表单输入控件。
input type=button
创建按钮控件。
input type=checkbox
创建复选框控件。
input type=file
创建文件上载控件,该控件带有一个文本框和一个浏览按钮。
input type=hidden
传输关于客户/服务器交互的状态信息。
input type=image
创建一个图像控件,该控件被点击后将导致表单立即被提交。
input type=password
创建与 INPUT type=text 控件类似的单行文本输入控件,不过并不显示用户输入的内容。
input type=radio
创建单选钮控件。
input type=reset
创建一个按钮,点击该按钮后,将重置表单控件回其初始值。
input type=submit
创建一个按钮,点击该按钮后,即提交表单。
input type=text
创建一个单行的文本输入控件。
ins
表示插入到文档中的文本。
isindex
使浏览器显示一个对话框,提示用户输入单行文本。(不建议使用)
kbd
以定宽字体显示文本。(不建议使用)
label
为页面上的其它元素指定标签。
legend
在 fieldSet 对象绘制的方框内插入一个标题。
li
表示列表中的一个项目。
link
允许当前文档和外部文档建立连接。
listing
以固定宽度的字体显示文本。
map
包含客户端图像映射的坐标数据。
marqueee
创建一个滚动的文本字幕。(不建议使用)
menu
创建一个无序列表。
meta
向服务器和客户端传达关于文档的隐藏信息。
nobr
不换行显示文本。
noframes
包含对于那些不支持 FRAMESET 元素的浏览器使用的 HTML。
noscript
指定在不支持脚本的浏览器中显示的 HTML。
object
在 HTML 页面中插入对象。
ol
编制排序列表。
optgroup
允许作者对 select 元素中的选项进行逻辑分组。
option
表示 SELECT 元素中的一个选项。
p
表示一段。
param
设置 APPLET、EMBED 或 OBJECT 元素的属性初始值。
pre
以固定宽度字体显示文本。
q
分离文本中的引语。
s
带删除线方式显示文本。(不建议使用)
samp
表示代码范例。
script
指定由脚本引擎解释的页面中的脚本。
select
表示一个列表框或者一个下拉框。
small
指定内含文本要以比当前字体稍小的字体显示。
span
指定内嵌文本容器。
strike
带删除线显示文本。(不建议使用)
strong
以粗体显示文本。
style
指定页面的样式表。
sub
说明内含文本要以下标的形式显示,比当前字体稍小。
sup
说明内含文本要以上标的形式显示,比当前字体稍小。
table
说明所含内容组织成含有行和列的表格形式。
tbody
指明哪些行作为表格的主体。
td
指定表格中的单元格。
textarea
多行文本输入控件。
tfoot
指明哪些行作为表尾。
th
指定标题列。标题列将在单元格中居中并以粗体显示。
thead
指定哪些行作为表头。
title
文档的标题。
tr
指定表格中的一行。
tt
以固定宽度字体显示文本。(不建议使用)
u
带下划线显示文本。(不建议使用)
ul
表示不排序的项目列表。
var
定义程序变量,通常以斜体显示。
wbr
向一块 NOBR 文本中插入软换行。
请参考
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)