黑马程序员_.NET学习1(vs2010中用.net4.0的bug)
来源:互联网 发布:windows phone账号忘了 编辑:程序博客网 时间:2024/05/16 15:11
---------------------- Windows Phone 7手机开发、.Net培训、.NET学习型技术博客、期待与您交流! ----------------------
.net4.0 在ListView中新出现一个属性为ClientIDMode他又4个属性,1,Inherit 2,AutoID 3,Predctable 4,Static。
1,Inherit 采用的是树容器的策略。
2,AutoID 采用的是.NEt3.5的策略。
3,Static 指的是我给什么Id他就显示什么Id(vs编译时不做处理)
这些用法用在配合js代码在ListView的模版中找到控件的Id。
vs2010中用.net4.0的bug例子:
if(e.Item.ItemType==ListViewItemType.InsertItem)
{
TextBox PriceTextBox = (TextBox)e.Item.FindControl("PriceTextBox");
TextBox CountTextBox = (TextBox)e.Item.FindControl("CountTextBox");
TextBox AMountTextBox = (TextBox)e.Item.FindControl("AMountTextBox");
PriceTextBox.Attributes["onblur"] = "alert(document.getElementById('" + CountTextBox.ClientID + "').value)";
而CountTextBox.ClientID 在客户端渲染出来的Id不是我们要找的id。这段代码放在3.5的框架执行就不会有问题,在4.0中他渲染到浏览器的代码为:
<inputname="ListView1$ctrl6$PriceTextBox"type="text"id="ListView1_ctrl6_PriceTextBox"onblur="alert(document.getElementById('ctrl6_CountTextBox').value)" />
CountTextBox.Attributes["myId"] = CountTextBox.ClientID;
AMountTextBox.Attributes["myId"] = AMountTextBox.ClientID;
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)//放到ItemDataBound里面更好
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
DataRowView rowView = (DataRowView)e.Item.DataItem;
if (rowView != null)
{
_25rkdgl.DAL2.DataSetInBill2.T_InBill2Row inBillRow = (_25rkdgl.DAL2.DataSetInBill2.T_InBill2Row)rowView.Row;
DropDownList DropDownList1 = (DropDownList)e.Item.FindControl("DropDownList1");
DropDownList1.SelectedValue = Convert.ToString(inBillRow.InType);
}
}
if(e.Item.ItemType==ListViewItemType.InsertItem)
{
TextBox PriceTextBox = (TextBox)e.Item.FindControl("PriceTextBox");
TextBox CountTextBox = (TextBox)e.Item.FindControl("CountTextBox");
TextBox AMountTextBox = (TextBox)e.Item.FindControl("AMountTextBox");
//第一种方法解决4.0向浏览器传id的bug
PriceTextBox.Attributes["myId"] = PriceTextBox.ClientID;
CountTextBox.Attributes["myId"] = CountTextBox.ClientID;
AMountTextBox.Attributes["myId"] = AMountTextBox.ClientID;
PriceTextBox.Attributes["onblur"] = "calcAMount('" + PriceTextBox.ClientID + "','" + CountTextBox.ClientID + "','" + AMountTextBox.ClientID + "')";
CountTextBox.Attributes["onblur"] = "calcAMount('" + PriceTextBox.ClientID + "','" + CountTextBox.ClientID + "','" + AMountTextBox.ClientID + "')";
//第二种方法解决4.0向浏览器传id的bug
//PriceTextBox.Attributes["onblur"] = "alert(document.getElementById('ListView1_" + CountTextBox.ClientID + "').value)";
}
}
浏览器代码:
<script src="js/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
function calcAMount(PriceMyId, CountMyId, AMountMyId) {
var PriceVal = $("input[myId=" + PriceMyId + "]").val();
var CountVal = $("input[myId=" + CountMyId + "]").val();
var iPrice = parseInt(PriceVal,10);
var iCount = parseInt(CountVal, 10);
if (!isNaN(iPrice) && !isNaN(iCount))//isNan javaScript函数,用来判断一个值是否“不是数字”(Not a NumBer)
{
var AMountVal = $("input[myId=" + AMountMyId + "]").val(iPrice * CountVal);
}
}
</script>
---------------------- Windows Phone 7手机开发、.Net培训、.NET学习型技术博客、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/
- 黑马程序员_.NET学习1(vs2010中用.net4.0的bug)
- 黑马程序员_.NET学习4(Net网站SEO)
- 黑马程序员_学习日记5_ADO.Net入门1
- 黑马程序员_.NET学习5(前台)
- 黑马程序员_.NET学习2(前台基础)
- 黑马程序员_.NET学习3(前台基础)
- 黑马程序员_.NET学习6(js)
- 黑马程序员_.NET学习11(书第四章)
- 黑马程序员_.NET学习9(第六章)
- 黑马程序员_.NET学习13(SQLServer复习)
- 黑马程序员_.NET学习12(第七章多表查询1)
- .net4.0 DLL的Temporar ASP.NET Files缓存影响的大BUG
- 黑马程序员_关于String的学习
- 黑马程序员_关于集合的学习
- 黑马程序员_关于io的学习
- 黑马程序员_抽象类的学习
- 黑马程序员_接口的学习
- 黑马程序员_栈的学习总结
- 黑客活动合法化?荷兰在野党提议DDoS攻击合法
- poj 3461
- 中科院系统内计算机相关方向研究实力点评
- 观后感--《冠军》
- 小偷问题
- 黑马程序员_.NET学习1(vs2010中用.net4.0的bug)
- Internals of Java Class Loading
- 黑马程序员之ado.net之一
- linux环境变量配置的4个方法
- MMC 卡驱动分析
- hoj Count on Canton
- C++ Programmer's Cookbook 语言介绍大全
- [树状数组]HOJ 10069 星星的等级
- 享受软件测试带来的一切