总结一下散乱的开发点滴(1) (高手勿入)

工作中总结的一些小知识点,散乱的记录下来的,现在总结一下, (可能看起来比较晕呢 = =!):

1. string.Compare()方法有没有用过呢? 它能对strA,strB进行某一段开始的串比较,可以设置是否忽略大小写等.

2. 三级联动下拉框A,B,C,A>B>C
    若A变,则C也要清空时,可以用: B_SelectedIndexChanged(null,null);
    使C重新绑定一次,结果为空,但勿多用,好象会出现性能的损失喔。
  
3. DataGrid相关的几个Tips:
  1) datagrid:对其中的单元做变更时要注意,任何类似visible=false这种操作都会使
    当前的index变小,循环操作时要注意减到由visible=false引起的差量

  2) datagrid生成的table有一些我们不需要的样式,删掉datagrid自动生成的style      

var obj1 = document.getElementById("dgrLevelList");
if (obj1 != null){document.getElementById("dgrLevelList").style.cssText="";}

  3) ((DataBoundLiteralControl)e.Item.Cells[2].Controls[0]); 看明白了吗?可以将一个cell转化为 DataBoundLiteralControl 类型
 
  4) 取得DataGrid绑定的某一个字段值: (DataRowView)e.Item.DataItem)["isrecent"].ToString()
 
  5) DataGrid的ITEM绑定事件:
        itemcreated方法:是由上至下一条一条的生成item的事件
       itembound方法:是全部生成完datagrid触发的事件
       postback时,一定会触发itemcreated事件,但不会触发itembound事件。前面是绑定时,后者只会在datagrid.bind()时触发
    
   6) 有时我们需要动态invisible一些列.但必须要注意每次进行绑定之前,必须将所有列的visible还原为true,以免以前invisible的列显示不出来(上次为搞这头疼了2小时呢)
 
4. 自定义控件如何自定义TagName:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

[assembly:TagPrefix(
"Emily.PlayControlbox""Emily")] // <- 这一句,看到了吗?在namespace上面定义
namespace Emily.PlayControlbox

5. 有时我们需要将jscript输出在一些控件后,以及某一些控件之前,可以将Script写到Literal对象中来实现
  
6. 可以使用ListBox.ClearSelection();方法来清除已选择的项

7. 转义字符:
  \a 与响铃(警报)\u0007 匹配。
  \b 如果在 [] 字符类中,则与退格符 \u0008 匹配;如果不是这种情况,请参见本表后面的“注意”部分。
  \t 与 Tab 符 \u0009 匹配。
  \r 与回车符 \u000D 匹配。
  \v 与垂直 Tab 符 \u000B 匹配。
  \f 与换页符 \u000C 匹配。
  \n 与换行符 \u000A 匹配。
  \e 与 Esc 符 \u001B 匹配。
  \040 将 ASCII 字符匹配为八进制数(最多三位);如果没有前导零的数字只有一位数或者与捕获组号相对应,则该数字为后向引用。(有关详细信息,请参见反向引用。)例如,字符 \040 表示空格。
  \x20 使用十六进制表示形式(恰好两位)与 ASCII 字符匹配。
  \cC 与 ASCII 控制字符匹配;例如,\cC 为 Ctrl-C。
  \u0020 使用十六进制表示形式(恰好四位)与 Unicode 字符匹配。
  \ 在后面带有不识别为转义符的字符时,与该字符匹配。例如,\* 与 \x2A 相同。
 
8.  Request.PhysicalApplicationPath.ToString(); 如果不指定则文件写在:c:\winnt\system32 目录

9.  模态窗口:
 父页面:

btnMore.Attributes.Add("onclick""var st = window.showModalDialog('SelectPerson.aspx','','dialogHeight: 220px;status: no;');if(st!= null){ document.all('TextMng').value=st};return st;");

 子页面:

RegisterStartupScript("OnClick","<script>window.returnValue ='" + DataList.Items[0].Cells[0].Text + "';window.close();</script>");

 子页面返回结果给window.returnValue;父页面得到结果st
 注意:模态窗口里一定要有这一句:<base target=_self> (写在body前)
取消时:

RegisterStartupScript("key","<script>alert('您取消了操作!');window.returnvalue=null ;window.opener=null;window.close(this);</script>");

10. 能用switch的地方总能抽象出一个抽象类(当然视必要性而言)

11. Oracle的几点Tips:
 1) 时间的比较,还能用add_months来进行比较,eg: add_months(sysdate,012) 

SELECT t.id,count AS v_count,'['||s.cname||']'||t.title AS title,to_char(t.createdate,'yyyy-mm-dd'AS datea 
   
FROM news_information t,news_class_dic s 
  
WHERE t.levelid = s.cid 
    
AND to_char(t.createdate,'yyyy-mm-dd'<= '2006-1-1' AND author != 'system'

    2) 还是时间的比较:
  SYSDATE为系统时间,直接用sysdate-t.e_date会得出秒的时差,而用t.e.date+3,则为+3天

     SELECT (CASE WHEN t.e_date + 3 > SYSDATE THEN 1 ELSE 0 ENDAS abc
     
FROM base_class_info t
    
WHERE (t.e_date + 3>= SYSDATE

  3) 几个常用系统对象的查询:
   查询视图 select * from user_views
   查询表格 select * from user_all_tables
   查询所有系统列 select * from ALL_CONS_COLUMNS
   查询所有用户列的注释 select * from USER_COL_COMMENTS where lower(column_name) like '%train_type_name%'
   
12. #define的妙用: (看懂了莫? 有时需要有一些debug的数据,可以这么做)

#define SXUN_DEBUG 
#if SXUN_DEBUG
//
#else
//..
#endif

不用时:
 #undef SXUN_DEBUG
 

posted @ 2005-09-21 14:21  Elaine Shi  阅读(2918)  评论(15编辑  收藏  举报