似乎是发现了asp.net ajaxToolkit中TAB控件的一个BUG
刚才想整理一下文章,不知道怎么搞的,一下子就没了,从新帖。
在一个项目当中,使用了asp.net ajaxToolkit中的TAB控件。
现在TAB中做布局,内容等等,没发现问题。
开始处理逻辑了,问题来了:
原来设想让一个按钮弹出ModalPopup控件,在其中让用户填写一些东西。
因为想让这个ModalPopup控件服用,想在弹出之前,在其中修改一些东西。
HTML控件没问题,服务器端控件就不行了。
诧异呀,以前可以这样用的?
开始疯狂的在园子里和Google上搜索,都没这个问题的答案。
在MSDN上看了一下,也没有,而且都是用$get直接用服务器端控件的ID呀。
那是我错了,整个测试的页面,试吧!
居然没有错误,达到了试验的目的,为什么?
那就开始将项目中的代码移过来一点一点的对比。
当添加了TAB控件以后,问题出现了,和项目中的问题一模一样。
请看下面的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="Swinfo.index" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
function processEventInfo(eventElement) {
var result = '';
for (var i = 0, l = myArray.length; i < l; i++) {
var arrayVal = myArray[i];
if (typeof(arrayVal) !== 'undefined') {
// Example: eventElement.clientX
$get("tbTitle").value = "test ok"
result += arrayVal + " = " + eval("eventElement." + arrayVal) + '<br/>';
}
}
$get('Label2').innerHTML = result;
}
function processEventInfo1(eventElement) {
var result = '';
for (var i = 0, l = myArray.length; i < l; i++) {
var arrayVal = myArray[i];
if (typeof(arrayVal) !== 'undefined') {
// Example: eventElement.clientX
$get("tbTitle1").value = "test ok"
result += arrayVal + " = " + eval("eventElement." + arrayVal) + '<br/>';
}
}
$get('Label4').innerHTML = result;
}
function pageLoad() {
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<div class="main_index">
<div id="main" class="main">
<ajaxToolkit:TabContainer ID="TabContainer_Main" runat="server" CssClass="green">
<ajaxToolkit:TabPanel ID="TabPanel_Wen" runat="server" HeaderText="问产品">
<ContentTemplate>
<!--测试内容,暂时保留-->
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" GroupingText="Update Panel">
<asp:Label ID="Label1" runat="server" Text="Click button to see event details."></asp:Label>
<br />
<asp:TextBox ID="tbTitle" runat="server" ></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" AccessKey="b" />
<br />
<asp:Label ID="Label2" runat="server"></asp:Label>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
<!--测试内容,暂时保留-->
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel2" runat="server" GroupingText="Update Panel">
<asp:Label ID="Label3" runat="server" Text="Click button to see event details."></asp:Label>
<br />
<asp:TextBox ID="tbTitle1" runat="server" ></asp:TextBox>
<br />
<asp:Button ID="Button2" runat="server" Text="Button" AccessKey="b" />
<br />
<asp:Label ID="Label4" runat="server"></asp:Label>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</form>
</body>
</html>
<script type="text/javascript">
//问题就处在这里下面的这条语句,两条语句的处理是一样的,一个在TAB内,一个在TAB外
//TAB内的是注释掉的那一句,接触注释,运行就会报告没有对象,换成<%=Button1.ClientID%>也是一样
//Sys.UI.DomEvent.addHandler($get("Button1"), "click", processEventInfo);
Sys.UI.DomEvent.addHandler($get("Button2"), "click", processEventInfo1);
var myArray = ['altKey', 'button', 'charCode', 'clientX', 'clientY',
'ctrlKey', 'offsetX', 'offsetY', 'screenX', 'screenY',
'shiftKey', 'target', 'type'];
</script>
代码中实现了两个一模一样的功能,一个在TAB中,一个在TAB外,TAB外面的就执行正确,$get能够取得服务器端控件的引用。
而TAB内的就无法实现对服务器端控件的引用。
事情清楚了,就是TAB控件惹的祸.
但是不是BUG,我也判断不出来。请各位高手看看,是不是BUG,如果不是BUG,请各位高手指教。
如果是BUG,我英文不好,请各位高人报告BUG吧!!!
转载于:https://www.cnblogs.com/panda/archive/2008/07/31/1257042.html
似乎是发现了asp.net ajaxToolkit中TAB控件的一个BUG相关推荐
- 怎么在ASP.NET中写HTML,如何:在 ASP.NET 网页中设置控件的 HTML 属性
如何:在 ASP.NET 网页中设置控件的 HTML 属性 10/22/2014 本文内容 更新:2007 年 11 月 这些示例显示如何向页面中的元素添加 HTML 属性.第一个示例演示如何以声明方 ...
- asp.net页面中Menu控件下拉菜单被frame挡住和iframe自适应高度的解决办法
当你在做一个仿windows程序的顶部菜单框架的时候,在asp.net中你可能会使用两个frame,一个frame在上面用来放菜单一个frame在下面用来方菜单点击后打开的页面.页面实现很简单,单运行 ...
- android怎么查看方法被谁调用,Android中查看布局文件中的控件(view,id)在哪里被调用(使用)...
在阅读别人的代码时通常是很痛苦的,有时很想要看一看布局中的控件在哪里被调用了,为之很苦恼 在这里提供一种方法. 复制要查看的控件ID,到R文件中搜索到该ID, 接下来就好办的了,选中ID按下Ctrl鼠 ...
- matlab listbox选中输出,vba中ListBox控件的使用
给ListBox添加内容 If CheckBox8 = True Then---------------------------checkbox控件被选中 For i = 0 To ListBox1. ...
- Asp.Net中验证控件简单分析
为了实现验证,.net提供了一个javascript脚本,当我们生成一个asp.net页面时,通过查看页面源代码的方式,会发现都调用了下面一个javascript文件: <script src= ...
- Asp.net 2.0 中获取控件输出的Html代码 (转)
将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public ...
- [转]ASP中ActiveX控件的内嵌及调用
懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,A ...
- 测试ASP.NET 2.0中Gridview控件高级技巧
ASP.NET 2.0中,新增加的gridview控件的确十分强大,弥补了在asp.net 1.1中,使用datagrid控件时的不足之处.因为在asp.net 1.1中,在使用datagrid时,很 ...
- asp.net findcontrol html控件,findcontrol-在ASP.NET中查找控件的更好方法
findcontrol-在ASP.NET中查找控件的更好方法 我有一个复杂的asp.net表单,在一个表单中甚至有50到60个字段,例如FindControl(),在MultiView中我有GridV ...
最新文章
- 夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
- ClickHouse系列教程二:使用航班飞行数据
- spring boot security ajax_Spring 和 SpringBoot 之间到底有啥区别?
- LIST OF CITIES FOR POTENTIAL VISIT IN SOUTHERN UK
- 实现灵活的IT架构的三个要点
- 网络流专题(完结撒花)
- 导航类查询词的收集方法
- iOS WebView生成长截图的第三种解决方案
- UniWebView笔记
- 透过现象看本质(一)
- SPSS软件数据中心化、标准化和归一化
- 如何查看你的浏览器的Flash版本
- 好看的充电宝有哪些?好看的充电宝推荐
- 自己最近在补天测试总结的一般思路
- python爬虫——爬取马蜂窝景点翻页文字评论
- 操作系统学习笔记——北京大学陈向群老师课后及习题答案(4)
- 监狱工作信息化建设的实践与思考
- 微信小程序云开发成绩查询小程序的制作过程。
- Python基础之数据编码
- 现场直播计分识别软件Crack:Scoreboard OCR
热门文章
- (原+转)使用opencv的DFT计算卷积
- SQL游标原理和使用方法(转)
- jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC
- Laravel 项目开发规范
- group by的用法原理
- 百度推广为什么出现在右侧
- java 1.6.0.11_ubuntu 11.10安装java1.6(转)
- Netty入门笔记-BIO编程
- mac服务器 文件无法删除文件夹,macOS 10.15.4 无法删除一个空文件夹
- mysql找出借书超过5本的读者_MySQL 练习题【一】附加题2