.NET BS项目边进行边总结
.NET BS项目边进去边总结,防止头脑不清醒的时候:
1]var ret=XmlHttpPost("../Library/WebPostOperationPage.tkx?Source=BSQuery"+condition, "");
将查询条件传递到后台,使用request.QueryString["XX"];接收;
如果查询结果是表类似的数据.可以使用GetXml();方法将查询后的数据XML化返回给接收的变量.
var xmlDoc=GetXmlDocument();
xmlDoc.loadXML(ret);
xmlDoc.setProperty("SelectionLanguage", "XPath");
这样就可以得到一个XML格式的字符串.利用
nodes=xmlDoc.selectNodes("/Toolkit/VIPInfo");获取节点集
node=xmlDoc.documentElement.selectSingleNode("/Toolkit/VIPInfo["+num+"]/GKDM");获取指定节点的值
2]num=window.showModalDialog("WebInitPage.tkx?Source=VIPListPage",ret,style);
在JS方法中打开一个模态页面,数据由ret传递过去生成,style="dialogWidth:450px;dialogHeight:"+height+"px;center:yes;scroll:no";用来修饰页面.在页面关闭后返回一个值.其中传递的ret参数有限定长度(目前还没弄清楚)
3]利用JS方法格式化数字,特别适合于金额
![]()
![]() function FormatNumber(srcStr,nAfterDot)        //格式化数字,特别对于金额;nAfterDot小数位数
function FormatNumber(srcStr,nAfterDot)        //格式化数字,特别对于金额;nAfterDot小数位数
![]() {
       {
![]() var srcStr,nAfterDot;
          var srcStr,nAfterDot;
![]() var resultStr,nTen;
          var resultStr,nTen;
![]() srcStr = ""+srcStr+"";
          srcStr = ""+srcStr+"";
![]() strLen = srcStr.length;
          strLen = srcStr.length;
![]() dotPos = srcStr.indexOf(".",0);
          dotPos = srcStr.indexOf(".",0);
![]() if (dotPos == -1){
          if (dotPos == -1){
![]() resultStr = srcStr+".";
            resultStr = srcStr+".";
![]() for (i=0;i<nAfterDot;i++){
            for (i=0;i<nAfterDot;i++){
![]() resultStr = resultStr+"0";
              resultStr = resultStr+"0";
![]() }
            }
![]() return resultStr;
            return resultStr;
![]() }
          }
![]() else{
          else{
![]() if ((strLen - dotPos - 1) >= nAfterDot){
            if ((strLen - dotPos - 1) >= nAfterDot){
![]() nAfter = dotPos + nAfterDot + 1;
              nAfter = dotPos + nAfterDot + 1;
![]() nTen =1;
              nTen =1;
![]() for(j=0;j<nAfterDot;j++){
              for(j=0;j<nAfterDot;j++){
![]() nTen = nTen*10;
                nTen = nTen*10;
![]() }
              }
![]() resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
              resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
![]() return resultStr;
              return resultStr;
![]() }
            }
![]() else{
            else{
![]() resultStr = srcStr;
              resultStr = srcStr;
![]() for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
              for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
![]() resultStr = resultStr+"0";
                resultStr = resultStr+"0";
![]() }
              }
![]() return resultStr;
              return resultStr;
![]() }
            }
![]() }
          }
![]() }
        } 
暂时这样了
4]JS实现浏览器菜单命令
![]()
![]()
![]() <object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Minimize"></object>
<object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Minimize"></object> 
![]() <object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Maximize"></object>
<object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Maximize"></object>
![]() <object id=close classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM NAME="Command" value="Close"></object>
<object id=close classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM NAME="Command" value="Close"></object> 
![]()
![]() <input type=button value=最小化 onclick=min.Click()>
<input type=button value=最小化 onclick=min.Click()> 
![]() <input type=button value=最大化 onclick=max.Click()>
<input type=button value=最大化 onclick=max.Click()> 
![]() <input type=button value=关闭 onclick=close.Click()></div>
<input type=button value=关闭 onclick=close.Click()></div>
![]()
![]() <INPUT type=button onclick="document.execCommand('open')" value=打开>
<INPUT type=button onclick="document.execCommand('open')" value=打开>
![]() <INPUT type=button onclick="document.execCommand('saveas')" value=保存>
<INPUT type=button onclick="document.execCommand('saveas')" value=保存>
![]() <INPUT type=button onclick="document.execCommand('print')" value=打印>
<INPUT type=button onclick="document.execCommand('print')" value=打印>
![]()
![]() <INPUT type=button onclick="document.execCommand('selectall')" value=全选>
<INPUT type=button onclick="document.execCommand('selectall')" value=全选>
![]() <INPUT type=button onclick="location.replace('view-source:'+location)" value=源文件>
<INPUT type=button onclick="location.replace('view-source:'+location)" value=源文件>
![]() <INPUT type=button onclick="window.external.ShowBrowserUI('PrivacySettings',null)" value=安全选项>
<INPUT type=button onclick="window.external.ShowBrowserUI('PrivacySettings',null)" value=安全选项>
![]()
![]() <input type=button onClick="window.external.ShowBrowserUI('LanguageDialog', null)" value=语言设置>
<input type=button onClick="window.external.ShowBrowserUI('LanguageDialog', null)" value=语言设置>
![]() <INPUT type=button onclick="window.external.AddFavorite(location.href, document.title)" value=加入收藏夹>
<INPUT type=button onclick="window.external.AddFavorite(location.href, document.title)" value=加入收藏夹>
![]() <INPUT type=button onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" value=整理收藏夹>
<INPUT type=button onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" value=整理收藏夹>
![]()
![]() <INPUT onclick=history.go(-1) type=submit value=后退>
<INPUT onclick=history.go(-1) type=submit value=后退>
![]() <INPUT onclick=history.go(1) type=submit value=前进>
<INPUT onclick=history.go(1) type=submit value=前进>
![]() <input type=button value=刷新 name=refresh onclick="window.location.reload()">
<input type=button value=刷新 name=refresh onclick="window.location.reload()">
![]()
![]() <input type="button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,'');>
<input type="button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,'');>
![]() <input type="button" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,'');>
<input type="button" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,'');>
5]在向页面输出现画的图片时,为了在FIREFOX中可以显示图片.
需要在输出时设置类型
![]() /// <summary>
 /// <summary>
![]() /// 保存绘制的图片
    /// 保存绘制的图片
![]() /// </summary>
    /// </summary>
![]() ///<param name="myPage" >输出的页面</param>
    ///<param name="myPage" >输出的页面</param>
![]() public void CreateImage(Page myPage)
    public void CreateImage(Page myPage)
![]() {
    {
![]() myPage.Response.ClearContent();
        myPage.Response.ClearContent();
![]() myPage.Response.ContentType = "image/Gif";
        myPage.Response.ContentType = "image/Gif";
![]() 
        
![]() image.Save(myPage.Response.OutputStream, ImageFormat.Gif);
        image.Save(myPage.Response.OutputStream, ImageFormat.Gif);
![]() }
    }
6]在用DataView时,如果数据是经过过滤得到的.
RowFilter和Sort属性设置后,用DataView[行][列]可以取值,
但前提是过滤后过值,实际上DataView中是有值的.
过滤后可能无值.这时要访问DataView,就得DataView.Table.Row[行][列]来访问了
同时在绑定数据控件时,从数据库取出的数据经过处理后还需要排序,也可以使用DataView:
![]() DataView dv = ds.Tables[0].DefaultView;
DataView dv = ds.Tables[0].DefaultView;
![]() dv.Sort = "TimeClass_Name, DateType, TCOrder";
   dv.Sort = "TimeClass_Name, DateType, TCOrder";
![]() DatagridTC.DataSource = dv;
   DatagridTC.DataSource = dv;
![]() DatagridTC.DataBind();
   DatagridTC.DataBind();
此代码上就简洁多了,更重要的是它不要再新创建dataset等,减少了内存和CPU的消耗。
![]() XMLNews xmlnews = new XMLNews();
XMLNews xmlnews = new XMLNews();
![]() DataTable tbl = xmlnews.loadFromXMLOrCache(Server.MapPath(XMLFile));//读取XML数据到DataTable 中
        DataTable tbl = xmlnews.loadFromXMLOrCache(Server.MapPath(XMLFile));//读取XML数据到DataTable 中
![]() if (tbl != null && tbl.Rows.Count > 0)
        if (tbl != null && tbl.Rows.Count > 0)
![]() {
        {
![]() DataView dv = tbl.DefaultView;
            DataView dv = tbl.DefaultView;
![]() dv.Sort = "NewsTime desc";
            dv.Sort = "NewsTime desc";
![]() DataTable srcTbl = tbl.Clone();
            DataTable srcTbl = tbl.Clone();
![]() for (int i = AspNetPagerNews.StartRecordIndex; i <= AspNetPagerNews.EndRecordIndex; i++)
            for (int i = AspNetPagerNews.StartRecordIndex; i <= AspNetPagerNews.EndRecordIndex; i++)
![]() {
            {
![]() srcTbl.ImportRow(dv[i - 1].Row);
                srcTbl.ImportRow(dv[i - 1].Row);
![]() }
当然可以对DataView中的多列数据进行排序
            }
当然可以对DataView中的多列数据进行排序
7]在NET1.0或1.1中可能会在ASPX代码中出现CodePage="936",导致页面部分控件的属性和事件不能正常.原因是由于:
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8
由于NET1.1和2.0都通用UTF-8,直接去掉CodePage="936"就可.
8]Repeater控件在绑定数据的时候,如果从外面另加一列数据绑定的话可以从
ItemDataBound(object sender, RepeaterItemEventArgs e)
事件中进行绑定.
但由于Repeater控件中ItemType分为Item,AlternatingItem,Header和Footer,
所以需要根据你绑定数据的位置进行判断.比如在Item,AlternatingItem中.
![]() protected void NobleMetalFromMarket_ItemDataBound(object sender, RepeaterItemEventArgs e)
protected void NobleMetalFromMarket_ItemDataBound(object sender, RepeaterItemEventArgs e)
![]() {
{
![]() if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
![]() {
 {
![]() 可以执行当中的ITEM绑定
  可以执行当中的ITEM绑定
![]() }
 }
![]() }
}
9]DataGrid控件在设置其属性的时候发现怎么设置bordercolor,生成页都变成了
style="bordercolor..",这样不能为生成的TABLE显示边框颜色.
但可以在后台进行设置
jiqiXunJia.Attributes.Add("bordercolor", "BAD7E7");
10]给绑定的短标题加提示,除了<A>自带的TITLE属性外还可以自定义一个DIV
![]() <div id="showTip" style="DISPLAY: none;border=1;border-width:2;position:absolute;z-index:1;font-size:10pt;color:#755100; background-color:#f9f4e8;border-color:#bd9a4a"></div>
<div id="showTip" style="DISPLAY: none;border=1;border-width:2;position:absolute;z-index:1;font-size:10pt;color:#755100; background-color:#f9f4e8;border-color:#bd9a4a"></div>
![]()
![]()
![]() <a onmouseover="ShowTips('<%#DataBinder.Eval(Container.DataItem,"NewsTitle")%>',event)" onmouseout="HideTips()"
<a onmouseover="ShowTips('<%#DataBinder.Eval(Container.DataItem,"NewsTitle")%>',event)" onmouseout="HideTips()"![]()
![]()
![]()
![]() function ShowTips(tips,ex)
function ShowTips(tips,ex)
![]() {
        {
![]() var x,y;
            var x,y;
![]() try{
            try{
![]() x=event.clientX;
                x=event.clientX;
![]() y=event.clientY+ document.body.scrollTop;
                y=event.clientY+ document.body.scrollTop;
![]() }catch(E){
            }catch(E){
![]() x=ex.pageX;
                x=ex.pageX;
![]() y=ex.pageY;
                y=ex.pageY;
![]() }
            }
![]() document.getElementById("showTip").style.left=x+10+"px";
            document.getElementById("showTip").style.left=x+10+"px";
![]() document.getElementById("showTip").style.top=y+10+"px";
            document.getElementById("showTip").style.top=y+10+"px";
![]() document.getElementById("showTip").innerHTML="<u>"+tips+"</u>";
            document.getElementById("showTip").innerHTML="<u>"+tips+"</u>";
![]() document.getElementById("showTip").style.display="block";
            document.getElementById("showTip").style.display="block";
![]() }
        }
![]() 
        
![]() function HideTips()
        function HideTips()
![]() {
        {
![]() document.getElementById("showTip").innerHTML="";
            document.getElementById("showTip").innerHTML="";
![]() document.getElementById("showTip").style.display="none";
            document.getElementById("showTip").style.display="none";
![]() }
        }
这样兼容了IE和FF浏览器,在确定事件的位置时,给纵人材加上了document.body.scrollTop;
当要显示的层的位置为position:fixed时就可以不用加上滑动条的高度,不过好像在IE6下不能实现.IE7下正常显示.
08-04-10更新:
后来发现在VS2003中ASPX页面中有:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >申明
而在VS2005中有
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
已经变成了XHTML1.0了,同时支持document.documentElement.scrollTop;
所以在VS2005中可以用document.documentElement.scrollTop取得滚动高.
而在VS2003中用document.body.scrollTop;取得滚动高;
[11]关于服务器生成的客户端ID
1]var ret=XmlHttpPost("../Library/WebPostOperationPage.tkx?Source=BSQuery"+condition, "");
将查询条件传递到后台,使用request.QueryString["XX"];接收;
如果查询结果是表类似的数据.可以使用GetXml();方法将查询后的数据XML化返回给接收的变量.
var xmlDoc=GetXmlDocument();
xmlDoc.loadXML(ret);
xmlDoc.setProperty("SelectionLanguage", "XPath");
这样就可以得到一个XML格式的字符串.利用
nodes=xmlDoc.selectNodes("/Toolkit/VIPInfo");获取节点集
node=xmlDoc.documentElement.selectSingleNode("/Toolkit/VIPInfo["+num+"]/GKDM");获取指定节点的值
2]num=window.showModalDialog("WebInitPage.tkx?Source=VIPListPage",ret,style);
在JS方法中打开一个模态页面,数据由ret传递过去生成,style="dialogWidth:450px;dialogHeight:"+height+"px;center:yes;scroll:no";用来修饰页面.在页面关闭后返回一个值.其中传递的ret参数有限定长度(目前还没弄清楚)
3]利用JS方法格式化数字,特别适合于金额

 function FormatNumber(srcStr,nAfterDot)        //格式化数字,特别对于金额;nAfterDot小数位数
function FormatNumber(srcStr,nAfterDot)        //格式化数字,特别对于金额;nAfterDot小数位数 {
       { var srcStr,nAfterDot;
          var srcStr,nAfterDot; var resultStr,nTen;
          var resultStr,nTen; srcStr = ""+srcStr+"";
          srcStr = ""+srcStr+""; strLen = srcStr.length;
          strLen = srcStr.length; dotPos = srcStr.indexOf(".",0);
          dotPos = srcStr.indexOf(".",0); if (dotPos == -1){
          if (dotPos == -1){ resultStr = srcStr+".";
            resultStr = srcStr+"."; for (i=0;i<nAfterDot;i++){
            for (i=0;i<nAfterDot;i++){ resultStr = resultStr+"0";
              resultStr = resultStr+"0"; }
            } return resultStr;
            return resultStr; }
          } else{
          else{ if ((strLen - dotPos - 1) >= nAfterDot){
            if ((strLen - dotPos - 1) >= nAfterDot){ nAfter = dotPos + nAfterDot + 1;
              nAfter = dotPos + nAfterDot + 1; nTen =1;
              nTen =1; for(j=0;j<nAfterDot;j++){
              for(j=0;j<nAfterDot;j++){ nTen = nTen*10;
                nTen = nTen*10; }
              } resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
              resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen; return resultStr;
              return resultStr; }
            } else{
            else{ resultStr = srcStr;
              resultStr = srcStr; for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
              for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){ resultStr = resultStr+"0";
                resultStr = resultStr+"0"; }
              } return resultStr;
              return resultStr; }
            } }
          } }
        } 暂时这样了
4]JS实现浏览器菜单命令


 <object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Minimize"></object>
<object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Minimize"></object>  <object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Maximize"></object>
<object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Maximize"></object> <object id=close classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM NAME="Command" value="Close"></object>
<object id=close classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM NAME="Command" value="Close"></object> 
 <input type=button value=最小化 onclick=min.Click()>
<input type=button value=最小化 onclick=min.Click()>  <input type=button value=最大化 onclick=max.Click()>
<input type=button value=最大化 onclick=max.Click()>  <input type=button value=关闭 onclick=close.Click()></div>
<input type=button value=关闭 onclick=close.Click()></div>
 <INPUT type=button onclick="document.execCommand('open')" value=打开>
<INPUT type=button onclick="document.execCommand('open')" value=打开> <INPUT type=button onclick="document.execCommand('saveas')" value=保存>
<INPUT type=button onclick="document.execCommand('saveas')" value=保存> <INPUT type=button onclick="document.execCommand('print')" value=打印>
<INPUT type=button onclick="document.execCommand('print')" value=打印>
 <INPUT type=button onclick="document.execCommand('selectall')" value=全选>
<INPUT type=button onclick="document.execCommand('selectall')" value=全选> <INPUT type=button onclick="location.replace('view-source:'+location)" value=源文件>
<INPUT type=button onclick="location.replace('view-source:'+location)" value=源文件> <INPUT type=button onclick="window.external.ShowBrowserUI('PrivacySettings',null)" value=安全选项>
<INPUT type=button onclick="window.external.ShowBrowserUI('PrivacySettings',null)" value=安全选项>
 <input type=button onClick="window.external.ShowBrowserUI('LanguageDialog', null)" value=语言设置>
<input type=button onClick="window.external.ShowBrowserUI('LanguageDialog', null)" value=语言设置> <INPUT type=button onclick="window.external.AddFavorite(location.href, document.title)" value=加入收藏夹>
<INPUT type=button onclick="window.external.AddFavorite(location.href, document.title)" value=加入收藏夹> <INPUT type=button onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" value=整理收藏夹>
<INPUT type=button onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" value=整理收藏夹>
 <INPUT onclick=history.go(-1) type=submit value=后退>
<INPUT onclick=history.go(-1) type=submit value=后退> <INPUT onclick=history.go(1) type=submit value=前进>
<INPUT onclick=history.go(1) type=submit value=前进> <input type=button value=刷新 name=refresh onclick="window.location.reload()">
<input type=button value=刷新 name=refresh onclick="window.location.reload()">
 <input type="button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,'');>
<input type="button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,'');> <input type="button" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,'');>
<input type="button" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,'');>5]在向页面输出现画的图片时,为了在FIREFOX中可以显示图片.
需要在输出时设置类型
 /// <summary>
 /// <summary> /// 保存绘制的图片
    /// 保存绘制的图片 /// </summary>
    /// </summary> ///<param name="myPage" >输出的页面</param>
    ///<param name="myPage" >输出的页面</param> public void CreateImage(Page myPage)
    public void CreateImage(Page myPage) {
    { myPage.Response.ClearContent();
        myPage.Response.ClearContent(); myPage.Response.ContentType = "image/Gif";
        myPage.Response.ContentType = "image/Gif"; 
         image.Save(myPage.Response.OutputStream, ImageFormat.Gif);
        image.Save(myPage.Response.OutputStream, ImageFormat.Gif); }
    }6]在用DataView时,如果数据是经过过滤得到的.
RowFilter和Sort属性设置后,用DataView[行][列]可以取值,
但前提是过滤后过值,实际上DataView中是有值的.
过滤后可能无值.这时要访问DataView,就得DataView.Table.Row[行][列]来访问了
同时在绑定数据控件时,从数据库取出的数据经过处理后还需要排序,也可以使用DataView:
 DataView dv = ds.Tables[0].DefaultView;
DataView dv = ds.Tables[0].DefaultView; dv.Sort = "TimeClass_Name, DateType, TCOrder";
   dv.Sort = "TimeClass_Name, DateType, TCOrder"; DatagridTC.DataSource = dv;
   DatagridTC.DataSource = dv; DatagridTC.DataBind();
   DatagridTC.DataBind();此代码上就简洁多了,更重要的是它不要再新创建dataset等,减少了内存和CPU的消耗。
 XMLNews xmlnews = new XMLNews();
XMLNews xmlnews = new XMLNews(); DataTable tbl = xmlnews.loadFromXMLOrCache(Server.MapPath(XMLFile));//读取XML数据到DataTable 中
        DataTable tbl = xmlnews.loadFromXMLOrCache(Server.MapPath(XMLFile));//读取XML数据到DataTable 中 if (tbl != null && tbl.Rows.Count > 0)
        if (tbl != null && tbl.Rows.Count > 0) {
        { DataView dv = tbl.DefaultView;
            DataView dv = tbl.DefaultView; dv.Sort = "NewsTime desc";
            dv.Sort = "NewsTime desc"; DataTable srcTbl = tbl.Clone();
            DataTable srcTbl = tbl.Clone(); for (int i = AspNetPagerNews.StartRecordIndex; i <= AspNetPagerNews.EndRecordIndex; i++)
            for (int i = AspNetPagerNews.StartRecordIndex; i <= AspNetPagerNews.EndRecordIndex; i++) {
            { srcTbl.ImportRow(dv[i - 1].Row);
                srcTbl.ImportRow(dv[i - 1].Row); }
            }7]在NET1.0或1.1中可能会在ASPX代码中出现CodePage="936",导致页面部分控件的属性和事件不能正常.原因是由于:
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8
由于NET1.1和2.0都通用UTF-8,直接去掉CodePage="936"就可.
8]Repeater控件在绑定数据的时候,如果从外面另加一列数据绑定的话可以从
ItemDataBound(object sender, RepeaterItemEventArgs e)
事件中进行绑定.
但由于Repeater控件中ItemType分为Item,AlternatingItem,Header和Footer,
所以需要根据你绑定数据的位置进行判断.比如在Item,AlternatingItem中.
 protected void NobleMetalFromMarket_ItemDataBound(object sender, RepeaterItemEventArgs e)
protected void NobleMetalFromMarket_ItemDataBound(object sender, RepeaterItemEventArgs e) {
{ if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
 { 可以执行当中的ITEM绑定
  可以执行当中的ITEM绑定 }
 } }
}9]DataGrid控件在设置其属性的时候发现怎么设置bordercolor,生成页都变成了
style="bordercolor..",这样不能为生成的TABLE显示边框颜色.
但可以在后台进行设置
jiqiXunJia.Attributes.Add("bordercolor", "BAD7E7");
10]给绑定的短标题加提示,除了<A>自带的TITLE属性外还可以自定义一个DIV
 <div id="showTip" style="DISPLAY: none;border=1;border-width:2;position:absolute;z-index:1;font-size:10pt;color:#755100; background-color:#f9f4e8;border-color:#bd9a4a"></div>
<div id="showTip" style="DISPLAY: none;border=1;border-width:2;position:absolute;z-index:1;font-size:10pt;color:#755100; background-color:#f9f4e8;border-color:#bd9a4a"></div>

 <a onmouseover="ShowTips('<%#DataBinder.Eval(Container.DataItem,"NewsTitle")%>',event)" onmouseout="HideTips()"
<a onmouseover="ShowTips('<%#DataBinder.Eval(Container.DataItem,"NewsTitle")%>',event)" onmouseout="HideTips()"


 function ShowTips(tips,ex)
function ShowTips(tips,ex) {
        { var x,y;
            var x,y; try{
            try{ x=event.clientX;
                x=event.clientX; y=event.clientY+ document.body.scrollTop;
                y=event.clientY+ document.body.scrollTop; }catch(E){
            }catch(E){ x=ex.pageX;
                x=ex.pageX; y=ex.pageY;
                y=ex.pageY; }
            } document.getElementById("showTip").style.left=x+10+"px";
            document.getElementById("showTip").style.left=x+10+"px"; document.getElementById("showTip").style.top=y+10+"px";
            document.getElementById("showTip").style.top=y+10+"px"; document.getElementById("showTip").innerHTML="<u>"+tips+"</u>";
            document.getElementById("showTip").innerHTML="<u>"+tips+"</u>"; document.getElementById("showTip").style.display="block";
            document.getElementById("showTip").style.display="block"; }
        } 
         function HideTips()
        function HideTips() {
        { document.getElementById("showTip").innerHTML="";
            document.getElementById("showTip").innerHTML=""; document.getElementById("showTip").style.display="none";
            document.getElementById("showTip").style.display="none"; }
        }这样兼容了IE和FF浏览器,在确定事件的位置时,给纵人材加上了document.body.scrollTop;
当要显示的层的位置为position:fixed时就可以不用加上滑动条的高度,不过好像在IE6下不能实现.IE7下正常显示.
08-04-10更新:
后来发现在VS2003中ASPX页面中有:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >申明
而在VS2005中有
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
已经变成了XHTML1.0了,同时支持document.documentElement.scrollTop;
所以在VS2005中可以用document.documentElement.scrollTop取得滚动高.
而在VS2003中用document.body.scrollTop;取得滚动高;
[11]关于服务器生成的客户端ID
普通添加生成的ASPX页面中服务器控件的ID值在生成静态页面后不变
但如果页面用到母版页,刚服务器控件生成的客户端ID则会变化
一般生成的ID值会跟随母版页的变化而变化
但如果母版页保持不变,则
[1]我们可以利用生成后的客户端ID值还控件JS操作
[2]在后台中利用this.ServerControlID.ClientID来获取服务器控件生成的客户端ID值,
然后赋给一个客户端标签上,利用JS取得.
[12]处理页面中多个回车事件:
function canQuit(e)//调用OnClientClick="canQuit(this);"
{
 alert(e.id);
 if(e.id=='ctl00_quitSys')//服务器控件ID:'<%= quitSys.ClientID %>'
  event.returnValue = false;//取消回车键的默认操作
}
通过上面的方法可以判断是哪个控件上的回车事件;
如果不想让页面有回车事件可:
function document.onkeydown()
{
 if(event.keyCode == 13)
  event.returnValue = false;
}
作者:Bober Song
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
                    
                

 
           
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号