这些代码全部写在和页面分离的代码页中(codebehind),如果要嵌入到*.aspx页面,可能 
会出现问题. 
 
1.打开新窗口 
  这个简单:Response.Write(@"<script 
    language='javascript'>window.open('url');"
2.关闭窗口 
  //关闭当前窗口,并提示用户时候关闭,yes关闭,no退出 
  Response.Write(@"<script language='javascript'>window.close();"
  //延迟关闭窗口(下面代码表示2秒后关闭,无需确认) 
  Response.Write(@"<script 
    language='javascript'>setTimeout('self.close()',2000);"
3.延迟时间 
  这个和上面的没有多少区别.我用到的情况是,在用户操作完毕给出提示,"n秒后,页面 
    转向"之类的只需去掉2重的Self.close()即可 
  Response.Write(@"<script 
    language='javascript'>setTimeout(',2000);"
4.弹出提示或警告窗口 
  Response.Write(@"<script language='javascript'>alert('添加成功,2秒钟后页面 
    将自动跳');"
5.刷新其他页面 
  这个用到的情况还是不少.比如在B页面对数据更新和修改,另一页面A要保持最新数据 
  给客户,这是就要在对B操作完毕的情况下对A进行刷新: 
  Response.Write(@"<script language='javascript'>window.opener.location. 
    href='./default.aspx'" ; 
6.页面跳转 
  有时候在学要给出提示的情况下进行页面跳转,不能使用Response.Redirect("url"
  比如,当客户操作完毕,单击按钮提交,弹出提示框(使用上面3和4),如果使用了 
    Response.Redirect("url"
  那么页面将不给出提示,页就是3和4没有起作用就直接转向了. 
  如果你是下面的操作过程: 
  1).Response.Write(@"<script language='javascript'>alert('添加成功,2秒钟后页 
    面将自动跳');"
  2).Response.Write(@"<script 
    language='javascript'>setTimeout(',2000);"
  3).页面转向: 
    Response.Write("<meta http-equiv='refresh' 
    content='0;URL=./default.aspx'>"
    //这个我不知道用javascript怎么实现,熟悉的轻补充一下 
7.窗口传制问题 
  这个问题比较烦,打开模态窗口(ShowModelDialog)我还没有实现,请各位补充. 
  具体情况是这样的,比如说A打开一个新窗口B,当用户对B操作完毕后,我们获得必要的 
  数据,自动将其赋给A中的TextBox等控件,这个过程是在客户端完成的.就像发送邮件时, 
  需要从地址本中选取,然后将选中的发送地址传回来. 
  1).在A中加入如下代码,打开一个新窗口B. 
     Response.Write(window.">@"window.
        open('B.aspx',','toolbar=no,menubar=no,status=yes,location=no, 
        resizable=no,scrollbars=no,width=500,height=350');"
  2).对B操作完毕,获得必要数据tmpStr,然后将其赋值给A中的TextBox1 
     Response.Write(@"<script 
        language='javascript'>opener.document.all.TextBox1.value 
         ='" +tmpStr+"';"
  注意:这个过程是在客户单用javascript完成的,因此我们不能按照服务端的编程习惯 
以及不能使用web服务控件的服务端属性进行操作.TextBox1是一个web服务控件, 
其id为TextBox1,A页面被服务器解析为html,通过浏览器浏览,TextBox1就变成了 
纯html控件,我们这里用javascript操作的也就是html控件,因此赋值使用的是 
TextBox1的value属性而不是Text属性.另外,web服务器控件的id被解析成html后, 
id有时会变,我们只要注意使用服务器解析后的id就成了,在浏览器中右键->查看源文件 
即可得到 
 
  对第七种操作情况最好使用打开模态窗口windows.ShowModelDialog(),但是比较麻烦, 
哦还没有实现. 
 
 
接上: 
 
调整本窗口大小和位置 
Response.Write("window.resizeTo(500,400);"
Response.Write("window.moveTo(300,200);"
 
 
接上: 
 
补:使用模态窗口传值 
 
主要代码如下: 
a.aspx and a.aspx.cs 
 
<%@ Page language="c#" Codebehind="a.aspx.cs" AutoEventWireup="false" 
Inherits="Genesis02.a" %> 
<HTML> 
    <HEAD> 
        <title>a</title> 
        <SCRIPT language="javascript"> 
            var str; 
 
            function pop(url) 
 
            { 
                var myDialog = document.a.TBoxType.value; 
 
                if (window.showModalDialog) 
                { 
                    str=window.showModalDialog(url,myDialog,"dialogHeight: 
300px; dialogWidth: 500px;center: yes; help: no;resizable: yes; status: 
no;"
                    if (typeof(str) != "undefined" 
                    { 
                        document.a.TBoxType.value = str; 
                    } 
                } 
            } 
        </SCRIPT> 
    </HEAD> 
    <body MS_POSITIONING="GridLayout"> 
        <form id="a" method="post" runat="server"> 
            <asp:textbox id="TBoxType" 
runat="server"></asp:textbox><asp:button id="BtnGetType" Runat="server" 
Text="Open"></asp:button> 
        </form> 
     
</HTML> 
__________________________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// <summary> 
    /// a 的摘要说明。 
    /// </summary> 
    public class a : System.Web.UI.Page 
    { 
        protected System.Web.UI.WebControls.TextBox TBoxType; 
        protected System.Web.UI.WebControls.Button BtnGetType; 
 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            if (!IsPostBack) 
 
            { 
                BtnGetType.Attributes["onclick"] = "pop('c.aspx');return 
false;"; 
            } 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// <summary> 
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// </summary> 
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
 
        } 
        #endregion 
    } 

 
 
################################################################# 
b.aspx and b.aspx.cs 
 
<%@ Page language="c#" Codebehind="b.aspx.cs" AutoEventWireup="false" 
Inherits="Genesis02.b" %> 
<HTML> 
    <HEAD> 
        <title>b</title> 
        <SCRIPT language="javascript"> 
        function closeme() 
        { 
 
            //top.returnvalue = 
window.document.all.LBoxRFAContent.options[window.document.all.LBoxRFAContent 
.selectedindex].value; 
            top.returnvalue = document.getElementById("TBoxvalue".value; 
            top.close(); 
        } 
 
        function Body_Load() 
        { 
            if(window.dialogArguments != null) { 
                window.document.getElementById("TBoxvalue".value = 
window.dialogArguments; 
            } 
        } 
        </SCRIPT> 
    </HEAD> 
    <body MS_POSITIONING="GridLayout" onload="Body_Load()"> 
        <form id="b" method="post" runat="server"> 
            <asp:Button id="BtnClose" style="Z-INDEX: 101; LEFT: 152px; 
POSITION: absolute; TOP: 131px" runat="server" Text="Close me"></asp:Button> 
 
            <asp:TextBox id="TBoxvalue" style="Z-INDEX: 102; LEFT: 149px; 
POSITION: absolute; TOP: 69px" runat="server"></asp:TextBox> 
        </form> 
     
</HTML> 
 
__________________________________________________________________ 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// <summary> 
    /// b 的摘要说明。 
    /// </summary> 
    public class b : System.Web.UI.Page 
    { 
        protected System.Web.UI.WebControls.TextBox TBoxvalue; 
        protected System.Web.UI.WebControls.Button BtnClose; 
 
 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            if (!IsPostBack) 
            { 
                BtnClose.Attributes["onclick"] = "closeme();return false;"; 
            } 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// <summary> 
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// </summary> 
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
 
        } 
        #endregion 
    } 

 
####################################################################### 
 
c.aspx and c.asp.cs 
 
<%@ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false" 
Inherits="Genesis02.c" %> 
<HTML> 
 
    <HEAD> 
        <TITLE>c</TITLE> 
    </HEAD> 
    <frameset rows="0,*"> 
        <frame src="about:blank"> 
        <frame src="b.aspx"> 
    </frameset> 
</HTML> 
 
 
____________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

 
    /// <summary> 
    /// c 的摘要说明。 
    /// </summary> 
    public class c : System.Web.UI.Page 
    { 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            // 在此处放置用户代码以初始化页面 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// <summary> 
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// </summary> 
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
        } 
        #endregion 
    } 

 
############################################################################# 
 
c.aspx and c.asp.cs 
 
<%@ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false" 
Inherits="Genesis02.c" %> 
<HTML> 
    <HEAD> 
        <TITLE>c</TITLE> 
    </HEAD> 
    <frameset rows="0,*"> 
        <frame src="about:blank"> 
        <frame src="b.aspx"> 
    </frameset> 
</HTML> 
 
 
____________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// <summary> 
    /// c 的摘要说明。 
    /// </summary> 
    public class c : System.Web.UI.Page 
    { 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            // 在此处放置用户代码以初始化页面 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// <summary> 
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// </summary> 
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
        } 
        #endregion 
    } 

loading...

 

2006-4-21
如何修改MDI窗口的主背景

修改MDI窗口的主背景是MS不推荐的,但如果你需要可以使用下面的方法:

1——
原理:
MDI窗口有一个叫MdiClient的窗口对象作为主背景窗口,要修改MDI窗口的背景就是修改该MdiClient对象的背景

2——
关键:
如何获得MdiClient对象

3——
方法:
MdiClient是作为MDI窗口的一个ChildControl的形式存在的,因此我们可以通过遍历MDI窗口的Controls对象集来获得

4——
示例:
下面的代码把MDI窗口的主背景修改为兰色(如果你有特别的处理请作相应的处理)

private System.Windows.Forms.MdiClient m_MdiClient;
public Form1()
{
 //
 // Windows 窗体设计器支持所必需的
 //
 InitializeComponent();
 //
 // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
 //
 int iCnt=this.Controls.Count;
 for(int i=0;i<iCnt;i++)
 {
  if(this.Controls[i].GetType().ToString()=="System.Windows.Forms.MdiClient"
  {
   this.m_MdiClient=(System.Windows.Forms.MdiClient)this.Controls[i];
   break;
  }
 }
 this.m_MdiClient.BackColor=System.Drawing.Color.Blue;
}

具体的应用中,可以参考上面的代码把背景修改为其他的颜色、用图片平铺、拉伸等,就象通过代码修改非MDI窗口的背景一样。

另外,具体应用时,可能要考虑把这些东西放置到Paint或erasebkground等事件。

loading...

 

2006-4-19
datatgrid的cell用combobox来显示

本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。 

1. 在DataGrid中加入ComboBox列;

2. 把在DataGrid中的修改保存到对应的网格;
 
3. 设置DataGrid中网格的焦点。

下面是整个源代码,一些功能可以看注释。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace DataGridTest
{
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.DataGrid dgdFunctionArea;
  private DataTable dtblFunctionalArea;
  private System.Windows.Forms.Button buttonFocus;
  private System.ComponentModel.Container components = null;

  public Form1()
  {
   InitializeComponent();
   PopulateGrid();
  }

  protected override void Dispose( bool disposing 
  {
   if( disposing 
   {
    if (components != null) 
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing ;
  }

  #region Windows 窗体设计器生成的代码

  private void InitializeComponent()
  {
   this.dgdFunctionArea = new System.Windows.Forms.DataGrid();
   this.buttonFocus = new System.Windows.Forms.Button();
   ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();
   this.SuspendLayout();
   // 
   // dgdFunctionArea
   // 
   this.dgdFunctionArea.DataMember = "";
   this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;

   this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);
   this.dgdFunctionArea.Name = "dgdFunctionArea";
   this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);
   this.dgdFunctionArea.TabIndex = 0;
   // 
   // buttonFocus
   // 
   this.buttonFocus.Location = new System.Drawing.Point(232, 188);
   this.buttonFocus.Name = "buttonFocus";
   this.buttonFocus.Size = new System.Drawing.Size(84, 23);
   this.buttonFocus.TabIndex = 1;
   this.buttonFocus.Text = "获取焦点";
   this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);
   // 
   // Form1
   // 
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(332, 217);
   this.Controls.Add(this.buttonFocus);
   this.Controls.Add(this.dgdFunctionArea);
   this.Name = "Form1";
   this.Text = "Form1";
   ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();
   this.ResumeLayout(false);

  }
  #endregion
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main() 
  {
   Application.Run(new Form1());
  }
  //初始化DataGrid
  private void PopulateGrid()
  {
   //创建一个DataTable对象,包括四列,前三列为String,最后一列为Boolean。
   dtblFunctionalArea = new DataTable ("FunctionArea";
   string[] arrstrFunctionalArea = new string [3]{"Functional Area","Min","Max"};
   DataColumn dtCol = null;
   //创建String列 
   for(int i=0; i< 3;i++)
   { 
    dtCol = new DataColumn(arrstrFunctionalArea[i]);
    dtCol.DataType = Type.GetType("System.String";
    dtCol.DefaultValue = "";
    dtblFunctionalArea.Columns.Add(dtCol); 
   } 

   //创建Boolean列,用CheckedBox来显示。 
   DataColumn dtcCheck = new DataColumn("IsMandatory";
   dtcCheck.DataType = System.Type.GetType("System.Boolean";
   dtcCheck.DefaultValue = false;
   dtblFunctionalArea.Columns.Add(dtcCheck);

   //把表绑定到DataGrid
   dgdFunctionArea.DataSource = dtblFunctionalArea; 

   //为DataGrid加载DataGridTableStyle样式
   if(!dgdFunctionArea.TableStyles.Contains("FunctionArea")
   {
    DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
    dgdtblStyle.MappingName = dtblFunctionalArea.TableName;
    dgdFunctionArea.TableStyles.Add(dgdtblStyle);
    dgdtblStyle.RowHeadersVisible = false;
    dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
    dgdtblStyle.AllowSorting = false;
    dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);
    dgdtblStyle.RowHeadersVisible = false;
    dgdtblStyle.HeaderForeColor = Color.White;
    dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, 
    System.Drawing.FontStyle.Bold, 
    System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
    dgdtblStyle.GridLineColor = Color.DarkGray;
    dgdtblStyle.PreferredRowHeight = 22;
    dgdFunctionArea.BackgroundColor = Color.White; 

    //设置列的宽度 
    GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;
    colStyle[0].Width = 100;
    colStyle[1].Width = 50;
    colStyle[2].Width = 50;
    colStyle[3].Width = 80;
   }

   DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0]; 

   ComboBox cmbFunctionArea = new ComboBox();
   cmbFunctionArea.Items.AddRange(new object[]{"选项一","选项二","选项三"});
   cmbFunctionArea.Cursor = Cursors.Arrow;
   cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;
   cmbFunctionArea.Dock = DockStyle.Fill;

   //在选定项发生更改并且提交了该更改后发生

   cmbFunctionArea.SelectionChangeCommitted += new  EventHandler(cmbFunctionArea_SelectionChangeCommitted); 

   //把ComboBox添加到DataGridTableStyle的第一列

   dgtb.TextBox.Controls.Add(cmbFunctionArea); 

  }

  //设置焦点模拟

  private void GetFocus(int row,int col)
  {
   //先把焦点移动到DataGrid
   this.dgdFunctionArea.Focus(); 
   //把焦点移动到DataGridCell
   DataGridCell dgc = new DataGridCell(row,col); 
   this.dgdFunctionArea.CurrentCell = dgc; 
   DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col]; 

   //设置焦点

   dgtb.TextBox.Focus();
  } 

  //把Combobox上修改的数据提交到当前的网格

 private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)
 {
  this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();

 } 

 //设置新的焦点

 private void buttonFocus_Click(object sender, System.EventArgs e)
 {
  //焦点模拟,这里设置第三行第一列
  GetFocus(2,0);
 }
}


下面是测试界面:

 

  总结,这里是通过DataGridTextBoxColumn.TextBox.Controls.Add方法实现在列中添加ComboBox控件;对于数据的保存是使用ComboBox.SelectionChangeCommitted事件来完成;设置焦点是通过DataGridTextBoxColumn.TextBox.Focus方法来实现。另外通过这个方法也可以添加DateTimePicker等类似的控件。
loading...

 

2006-4-19
asp.net 不得不知道的问题?

1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private :   私有成员, 在类的内部才可以访问。 
     protected : 保护成员,该类内部和继承类中可以访问。 
     public :    公共成员,完全公开,没有访问限制。 
     internal:   在同一命名空间内可以访问。

2 .列举ASP.NET 页面之间传递值的几种方式。 
答. 1.使用QueryString,  如....?id=1; response. Redirect().... 
    2.使用Session变量 
    3.使用Server.Transfer

3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少, 用递归算法实现。
答:public class MainClass 
    { 
        public static void Main()   
        { 
            Console.WriteLine(Foo(30)); 
        } 
        public static int Foo(int i) 
        { 
            if (i <= 0) 
                return 0; 
            else if(i > 0 && i <= 2) 
                return 1; 
            else return Foo(i -1) + Foo(i - 2); 
        } 
    } 

4.C#中的委托是什么?事件是不是一种委托?
答 :      
 委托可以把一个方法作为参数代入另一个方法。
 委托可以理解为指向一个函数的引用。
 是,是一种特殊的委托

5.override与重载的区别
答 :
 override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
 Override 是进行基类中函数的重写。为了适应需要。

6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答 : 
 this.Server.Transfer

7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
答:
      foreach (System.Windows.Forms.Control control in this.Controls)
      {
 if (control is System.Windows.Forms.TextBox)
 {
     System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; 
     tb.Text = String.Empty ;
 }
      }

8.请编程实现一个冒泡排序算法?
答:
        int [] array = new int [*] ;
 int temp = 0 ;
 for (int i = 0 ; i < array.Length - 1 ; i++)
 {
  for (int j = i + 1 ; j < array.Length ; j++)
  {
   if (array[j] < array[i])
   {
    temp = array[i] ;
    array[i] = array[j] ;
    array[j] = temp ;
   }
  }
 }

9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。

10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答:
    int Num = this.TextBox1.Text.ToString() ;
 int Sum = 0 ;
 for (int i = 0 ; i < Num + 1 ; i++)
 {
  if((i%2) == 1)
  {
   Sum += i ;
  }
  else
  {
   Sum = Sum  - I ;
  }
 }
 System.Console.WriteLine(Sum.ToString());
 System.Console.ReadLine() ;

11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答:一般为3层
        数据访问层,业务层,表示层。
 数据访问层对数据库进行增删查改。
 业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
 表示层为了与用户交互例如用户添加表单。
优点:  分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点:  增加成本。

12.在下面的例子里
     using System;
     class A
     {
          public A()
           {
                PrintFields();
           }
          public virtual void PrintFields(){}
      }
      class B:A
      {
           int x=1;
           int y;
           public B()
    {
               y=-1;
           }
           public override void PrintFields()
           {
               Console.WriteLine("x={0},y={1}",x,y);
           }
当使用new B()创建B的实例时,产生什么输出?
答:X=1,Y=0;x= 1 y = -1

13.什么叫应用程序域?
答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

14.CTS、CLS、CLR分别作何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

15.什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

16.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。

17.什么是强类型系统?
答:RTTI:类型识别系统。

18.net中读写数据库需要用到那些类?他们的作用?
答:DataSet:数据存储器。
    DataCommand:执行语句命令。
    DataAdapter:数据的集合,用语填充。

19.ASP.net的身份验证方式有哪些?分别是什么原理?
答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)

20.什么是Code-Behind技术?
答:代码后植。

21.在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)

22.常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
    2.使用VS.NET中的Add Web Reference菜单选项

23..net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 
答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

25.请详述在dotnet中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 

26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: 
namespace test 

public delegate void OnDBOperate(); 
public class UserControlBase : System.Windows.Forms.UserControl 

public event OnDBOperate OnNew; 
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

if(e.Button.Equals(BtnNew)) 

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。


}
答:if( OnNew != null  
    OnNew( this, e 

27.分析以下代码,完成填空 
string strTmp = "abcdefg某某某"; 
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; 
int j= strTmp.Length; 
以上代码执行完后,i= j= 
答:i=13,j=10 

28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) 

29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i) 

   lock(this) 
 { 
   if (i>10) 
   { 
     i--; 
     test(i); 
   } 
 } 
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

32.给定以下XML文件,完成算法流程图。
<FileSystem> 
< DriverC > 
<Dir DirName=”MSDOS622”> 
<File FileName =” Command.com” ></File> 
</Dir> 
<File FileName =”MSDOS.SYS” ></File> 
<File FileName =” IO.SYS” ></File> 
</DriverC> 
</FileSystem> 
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d  

   FileOrFolders = d.GetFileOrFolders(); 
   foreach( FileOrFolder fof in FileOrFolders  
   { 
     if( fof is File  
     You Found a file; 
     else if ( fof is Directory  
     FindFile( fof 
    } 
}

33.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
答:解1:  select top 10 * from A where id not in (select top 30 id from A) 
    解2:  select top 10 * from A where id > (select max(id) from (select top 30 id from A as A) 

34.面向对象的语言具有________性、_________性、________性
答:封装、继承、多态。

35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
答:IEnumerable 、 GetEnumerator。

36.GC是什么? 为什么要有GC?
答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: 
  System.gc()
  Runtime.getRuntime().gc()

37.String s = new String("xyz";创建了几个String Object?
答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

38.abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

39.启动一个线程是用run()还是start()?
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

41.构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

42.是否可以继承String类?
答:String类是final类故不可以继承。

43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答:会执行,在return前执行。

44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:不对,有相同的hash code。

45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。

48.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。

49.List, Set, Map是否继承自Collection接口?
答:List,Set是Map不是

50.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

51.数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法。

52.sleep() 和 wait() 有什么区别?
答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

54.谈谈final, finally, finalize的区别。
答:
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此     一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中     不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为     final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会     执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理     工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的     ,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()      方法是在垃圾收集器删除对象之前对这个对象调用的。

55.如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

56.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate   server或SQL   Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

57.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

58.堆和栈的区别?
答:
    栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

59.成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

60.ASP。NET与ASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提高,有利于保护源码。

61.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
 int num=rnd.Next(1,101);
 if(!myList.Contains(num))
 myList.Add(num);
}
  for(int i=0;i<100;i++)
   intArr[i]=(int)myList[i];

62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
答:session(viewstate) 简单,但易丢失
    application        全局
    cookie             简单,但可能不支持,可能被伪造
    input ttype="hidden"     简单,可能被伪造
    url参数                  简单,显示于地址栏,长度有限
    数据库                   稳定,安全,但性能相对弱

63.请指出GAC的含义?
答:全局程序集缓存。

64.向服务器发送请求有几种方式?
答:get,post。get一般为链接方式,post一般为按钮方式。

65.DataReader与Dataset有什么区别?
答:一个是只能向前的只读游标,一个是内存中的表。

66.软件开发过程一般有几个阶段?每个阶段的作用?
答:需求分析,架构设计,代码编写,QA,部署

67.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法。
答:using 引入名称空间或者使用非托管资源
    new 新建实例或者隐藏父类方法

68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr=" xx   xx  ";
inputStr=Regex.Replace(inputStr.Trim()," *"," ";

69.下面这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal";
else
Console.WriteLine("Not Equal";
答:不相等,因为比较的是对象

70.什么叫做SQL注入,如何防止?请举例说明。
答:利用sql关键字对网站进行攻击。过滤关键字'等

71.什么是反射?
答:动态获取程序集信息

72.用Singleton如何写设计模式
答:static属性里面new ,构造函数private

73.什么是Application Pool?
答:Web应用,类似Thread Pool,提高并发性能。

74.什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。

75.什么是XML?
答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

76.什么是Web Service?UDDI?
答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
   UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

77.什么是ASP.net中的用户控件?
答:用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。

78.列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config

79.ADO.net中常用的对象有哪些?分别描述一下。
答:Connection 数据库连接对象
    Command 数据库命令
    DataReader 数据读取器
    DataSet 数据集

80.什么是code-Behind技术。
答:ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.

81.什么是SOAP,有哪些应用。
答:simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议..

82.C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

83.XML 与 HTML 的主要区别
答:1. XML是区分大小写字母的,HTML不区分。 
    2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束       标记。在XML中,绝对不能省略掉结束标记。 
    3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用       查找结束标记了。 
    4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。 
    5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

84.c#中的三元运算符是?
答:?:。

85.当整数a赋值给一个object对象时,整数a将会被?
答:装箱。

86.类成员有_____种可访问形式?
答:this.;new Class().Method;

87.public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。

88.float f=-123.567F; int i=(int)f;i的值现在是_____? 
答:-123。

89.委托声明的关键字是______?
答:delegate.

90.用sealed修饰的类有什么特点?
答:密封,不能继承。

91.在Asp.net中所有的自定义用户控件都必须继承自________?
答:Control。

92.在.Net中所有可序列化的类都被标记为_____? 
答:[serializable]

93.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?
答:GC。

94.下面的代码中有什么错误吗?_______
     using System;
     class A
     {
          public virtual void F(){
              Console.WriteLine("A.F";
           }
      }
      abstract class B:A
       {
           public abstract override void F();  答:abstract override 是不可以一起修饰. 
       }                                           // new public abstract void F(); 

95.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出新的类,不可以____(可以 or 不可以)直接创建T的任何实例。
答:不可以,不可以。

96.下面这段代码有错误么?
    switch (i){
    case():        答://case()条件不能为空
        CaseZero();
        break;
    case 1:
        CaseOne();
        break;
    case 2:
        dufault;   答://wrong,格式不正确
        CaseTwo();
        break;
   }

97.在.Net中,类System.Web.UI.Page 可以被继承么?
答:可以。

98..net的错误处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

99.利用operator声明且仅声明了==,有什么错误么?
答:要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="

100.在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
答:在form中重载DefWndProc函数来处理消息:
protected override void DefWndProc ( ref System.WinForms.Message m  

  switch(m.msg) 
  { 
    case WM_Lbutton : 
   ///string与MFC中的CString的Format函数的使用方法有所不同 
   string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam); 
   MessageBox.Show(message);///显示一个消息框 
   break; 
    case USER:
    处理的代码
    default: 
   base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 
   break; 
  } 
}

101.在.net(C# or vb.net)中如何取消一个窗体的关闭。
答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
   {
      e.Cancel=true;
   } 

102.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
答:一个是退出整个应用程序,一个是关闭其中一个form。

103.在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10  321.50和£122  235  401.22
答:System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US";
    //System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB";为英    国  货币类型
    decimal y = 9999999999999999999999999999m;
    string str = String.Format(MyCulture,"My amount = {0:c}",y);

104.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
(1)       密码单词的最小长度是两个字母,可以相同,也可以不同
(2)       K不可能是单词的第一个字母
(3)       如果L出现,则出现次数不止一次
(4)       M不能使最后一个也不能是倒数第二个字母
(5)       K出现,则N就一定出现
(6)       O如果是最后一个字母,则L一定出现
问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?
  A) K   B)L   C) M    D) N
答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
  A)1个  B)3个  C)6个  D)9个
答案:A

问题三:下列哪一个是单词密码?
  A) KLLN   B) LOML   C) MLLO   D)NMKO
答案:C

8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案:62移动成2的6次方

105.对于这样的一个枚举类型:
enum Color:byte
{
  Red,
  Green,
  Blue,
  Orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
    byte[] bb=Enum.GetValues(typeof(Color));

106. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:attribute:自定义属性的基类;property :类中的属性

107.C#可否对内存进行直接的操作?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员  不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法

108.ADO。NET相对于ADO等主要有什么改进?
答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持

109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
答:<script language=javascript>
 setTimeout('window.close();',3000);
 function show()
 {
  if (window.event.button == 1)
  {
   alert("左";
  }
  else if (window.event.button == 2)
  {
   alert("右";
  }
 }


110.大概描述一下ASP。NET服务器控件的生命周期
答:初始化  加载视图状态  处理回发数据  加载  发送回发更改通知  处理回发事件  预呈现  保存状态  呈现  处置  卸载

111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
答:不能,可以实现接口

112.Static Nested Class 和 Inner Class的不同,说得越多越好
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

113.,&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

114.HashMap和Hashtable的区别。
答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.

115.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)

116.Overloaded的方法是否可以改变返回值的类型?
答:Overloaded的方法是可以改变返回值的类型。

117.error和exception有什么区别?
答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

118.<%# %> 和 <%  %> 有什么区别?
答:<%# %>表示绑定的数据源
    <% %>是服务器端代码块

119.你觉得ASP.NET 2.0(VS2005)和你以前使用的开发工具(.Net 1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)
答:1  ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.
    2  同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无       法 在页面嵌入服务器端代码获得帮助提示,
    3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
    4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者
    5 在ASP.NET中增加了40多个新的控件,减少了工作量

120.重载与覆盖的区别?
答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
    2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
    3、覆盖要求参数列表相同;重载要求参数列表不同。
    4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调       用时的实参表与形参表来选择方法体的。

121.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 
答:不是。可以用任意类型。

122.在C#中,string str = null 与 string str = " " 请尽量使用文字或图象说明其中的区别。
答:null是没有空间引用的;
    " " 是空间为0的字符串;

123.分析以下代码,完成填空
string strTmp = "abcdefg某某某"; 
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; 
int j= strTmp.Length; 
以上代码执行完后,i= j= 
答:i=13.j=10

124.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) 

125.分析以下代码。
public static void test(string ConnectString) 



System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); 
conn.ConnectionString = ConnectString; 
try 


conn.Open(); 
……. 
}
catch(Exception Ex) 

MessageBox.Show(Ex.ToString()); 
}
finally 


if (!conn.State.Equals(ConnectionState.Closed)) 
conn.Close(); 

}
请问 

1)以上代码可以正确使用连接池吗? 

答:回答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。 

2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来? 

答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。) 

126.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中

127.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。

128.在下面的例子里
     using System;
     class A
     {
          public A(){
                PrintFields();
           }
          public virtual void PrintFields(){}
      }
      class B:A
      {
           int x=1;
           int y;
           public B(){
               y=-1;
           }
           public override void PrintFields(){
               Console.WriteLine("x={0},y={1}",x,y);
           }
当使用new B()创建B的实例时,产生什么输出?
答:X=1,Y=0

129.下面的例子中

     using System;
     class A
     {
          public static int X;
          static A(){
               X=B.Y+1;
          }
      }
      class B
      {
           public static int Y=A.X+1;
           static B(){}
           static void Main(){
                Console.WriteLine("X={0},Y={1}",A.X,B.Y);
           }
       }
产生的输出结果是什么?
答:x=1,y=2

130.abstract class和interface有什么区别?
答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

loading...

 

2006-4-17
javascript 的应用

1. 打开新的窗口并传送参数: 

  传送参数: 

response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>" 
  接收参数: 

string a = Request.QueryString("id"
string b = Request.QueryString("id1"
  2.为按钮添加对话框 

Button1.Attributes.Add("onclick","return confirm(’确认?’)"
button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}" 
  3.删除表格选定记录 

int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex]; 
string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString() 
  4.删除表格记录警告 

private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e) 

 switch(e.Item.ItemType) 
 { 
  case ListItemType.Item : 
  case ListItemType.AlternatingItem : 
  case ListItemType.EditItem: 
   TableCell myTableCell; 
   myTableCell = e.Item.Cells[14]; 
   LinkButton myDeleteButton ; 
   myDeleteButton = (LinkButton)myTableCell.Controls[0]; 
   myDeleteButton.Attributes.Add("onclick","return confirm(’您是否确定要删除这条信息’);"
   break; 
  default: 
   break; 
 } 


  5.点击表格行链接另一页 

private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 

 //点击表格打开 
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
  e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id=" + e.Item.Cells[0].Text + "’);"

  双击表格连接到另一页 

  在itemDataBind事件中 

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

 string OrderItemID =e.item.cells[1].Text; 
 ... 
 e.item.Attributes.Add("ondblclick", "location.href=’../ShippedGrid.aspx?id=" + OrderItemID + "’"

  双击表格打开新一页 

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

 string OrderItemID =e.item.cells[1].Text; 
 ... 
 e.item.Attributes.Add("ondblclick", "open(’../ShippedGrid.aspx?id=" + OrderItemID + "’)"


6.表格超连接列传递参数 

<asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id=’ 
 <%# DataBinder.Eval(Container.DataItem, "数据字段1"%>’ & name=’<%# DataBinder.Eval(Container.DataItem, "数据字段2"%>’ /> 
  7.表格点击改变颜色 

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem) 

 e.Item.Attributes.Add("onclick","this.style.backgroundColor=’#99cc00’; 
    this.style.color=’buttontext’;this.style.cursor=’default’;"

  写在DataGrid的_ItemDataBound里 

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem) 

e.Item.Attributes.Add("onmouseover","this.style.backgroundColor=’#99cc00’; 
   this.style.color=’buttontext’;this.style.cursor=’default’;"
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=’’;this.style.color=’’;"


  8.关于日期格式 

  日期格式设定 

DataFORMatString="{0:yyyy-MM-dd}" 
  我觉得应该在itembound事件中 

e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"
  9.获取错误信息并到指定页面 

  不要使用Response.Redirect,而应该使用Server.Transfer 

  e.g 

// in global.asax 
protected void Application_Error(Object sender, EventArgs e) { 
if (Server.GetLastError() is HttpUnhandledException) 
Server.Transfer("MyErrorPage.aspx"

//其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了  

  Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理 

  10.清空Cookie 

Cookie.Expires=[DateTime]; 
Response.cookiess("UserName".Expires = 0 
  11.自定义异常处理 

//自定义异常处理类 
using System; 
using System.Diagnostics; 

namespace MyAppException 

 /// <summary> 
 /// 从系统异常类ApplicationException继承的应用程序异常处理类。 
 /// 自动将异常内容记录到Windows NT/2000的应用程序日志 
 /// </summary> 
 public class AppException:System.ApplicationException 
 { 
  public AppException() 
  { 
   if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。"
  } 

 public AppException(string message) 
 { 
  LogEvent(message); 
 } 

 public AppException(string message,Exception innerException) 
 { 
  LogEvent(message); 
  if (innerException != null) 
  { 
   LogEvent(innerException.Message); 
  } 
 } 

 //日志记录类 
 using System; 
 using System.Configuration; 
 using System.Diagnostics; 
 using System.IO; 
 using System.Text; 
 using System.Threading; 

 namespace MyEventLog 
 { 
  /// <summary> 
  /// 事件日志记录类,提供事件日志记录支持 
  /// <remarks> 
  /// 定义了4个日志记录方法 (error, warning, info, trace) 
  /// </remarks> 
  /// </summary> 
  public class ApplicationLog 
  { 
   /// <summary> 
   /// 将错误信息记录到Win2000/NT事件日志中 
   /// <param name="message">需要记录的文本信息</param> 
   /// </summary> 
   public static void WriteError(String message) 
   { 
    WriteLog(TraceLevel.Error, message); 
   } 

   /// <summary> 
   /// 将警告信息记录到Win2000/NT事件日志中 
   /// <param name="message">需要记录的文本信息</param> 
   /// </summary> 
   public static void WriteWarning(String message) 
   { 
    WriteLog(TraceLevel.Warning, message);   
   } 

   /// <summary> 
   /// 将提示信息记录到Win2000/NT事件日志中 
   /// <param name="message">需要记录的文本信息</param> 
   /// </summary> 
   public static void WriteInfo(String message) 
   { 
    WriteLog(TraceLevel.Info, message); 
   } 
   /// <summary> 
   /// 将跟踪信息记录到Win2000/NT事件日志中 
   /// <param name="message">需要记录的文本信息</param> 
   /// </summary> 
   public static void WriteTrace(String message) 
   { 
    WriteLog(TraceLevel.Verbose, message); 
   } 

   /// <summary> 
   /// 格式化记录到事件日志的文本信息格式 
   /// <param name="ex">需要格式化的异常对象</param> 
   /// <param name="catchInfo">异常信息标题字符串.</param> 
   /// <retvalue> 
   /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para> 
   /// </retvalue> 
   /// </summary> 
   public static String FORMatException(Exception ex, String catchInfo) 
   { 
    StringBuilder strBuilder = new StringBuilder(); 
    if (catchInfo != String.Empty) 
    { 
     strBuilder.Append(catchInfo).Append("\r\n"
    } 
    strBuilder.Append(ex.Message).Append("\r\n".Append(ex.StackTrace); 
    return strBuilder.ToString(); 
   } 

   /// <summary> 
   /// 实际事件日志写入方法 
   /// <param name="level">要记录信息的级别(error,warning,info,trace).</param> 
   /// <param name="messageText">要记录的文本.</param> 
   /// </summary> 
   private static void WriteLog(TraceLevel level, String messageText) 
   { 
    try 
    { 
     EventLogEntryType LogEntryType; 
     switch (level) 
     { 
      case TraceLevel.Error: 
       LogEntryType = EventLogEntryType.Error; 
       break; 
      case TraceLevel.Warning: 
       LogEntryType = EventLogEntryType.Warning; 
       break; 
      case TraceLevel.Info: 
       LogEntryType = EventLogEntryType.InFORMation; 
       break; 
      case TraceLevel.Verbose: 
       LogEntryType = EventLogEntryType.SuccessAudit; 
       break; 
      default: 
       LogEntryType = EventLogEntryType.SuccessAudit; 
       break; 
     } 

     EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName 
     //写入事件日志 
     eventLog.WriteEntry(messageText, LogEntryType); 

    } 
   catch {} //忽略任何异常 
  } 
 } //class ApplicationLog 

12.Panel 横向滚动,纵向自动扩展 

<aspanel style="overflow-x:scroll;overflow-y:auto;"></aspanel> 
  13.回车转换成Tab 

<script language="javascript" for="document" event="onkeydown"> 
 if(event.keyCode==13 && event.srcElement.type!=’button’ && event.srcElement.type!=’submit’ &&     event.srcElement.type!=’reset’ && event.srcElement.type!=’’&& event.srcElement.type!=’textarea’); 
   event.keyCode=9; 
</script> 

onkeydown="if(event.keyCode==13) event.keyCode=9" 

  14.DataGrid超级连接列 

DataNavigateUrlField="字段名" DataNavigateUrlFORMatString="::URL::http://xx/inc/delete.aspx?ID={0}"  
  15.DataGrid行随鼠标变色 

private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 

 if (e.Item.ItemType!=ListItemType.Header) 
 { 
  e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\""
  e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\""
 } 

  16.模板列 

<ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID"> 
<ITEMTEMPLATE> 
<ASP:LABEL text=’<%# DataBinder.Eval(Container.DataItem, "ArticleID"%>’ runat="server" width="80%" id="lblColumn" /> 
</ITEMTEMPLATE> 
</ASP:TEMPLATECOLUMN> 

<ASP:TEMPLATECOLUMN headertext="选中"> 
<HEADERSTYLE wrap="False" horizontalalign="Center"></HEADERSTYLE> 
<ITEMTEMPLATE> 
<ASP:CHECKBOX id="chkExport" runat="server" /> 
</ITEMTEMPLATE> 
<EDITITEMTEMPLATE> 
<ASP:CHECKBOX id="chkExportON" runat="server" enabled="true" /> 
</EDITITEMTEMPLATE> 
</ASP:TEMPLATECOLUMN> 
  后台代码 

protected void CheckAll_CheckedChanged(object sender, System.EventArgs e) 

 //改变列的选定,实现全选或全不选。 
 CheckBox chkExport ; 
 if( CheckAll.Checked) 
 { 
  foreach(DataGridItem oDataGridItem in MyDataGrid.Items) 
  { 
   chkExport = (CheckBox)oDataGridItem.FindControl("chkExport"
   chkExport.Checked = true; 
  } 
 } 
 else 
 { 
  foreach(DataGridItem oDataGridItem in MyDataGrid.Items) 
  { 
   chkExport = (CheckBox)oDataGridItem.FindControl("chkExport"
   chkExport.Checked = false; 
  } 
 } 

  17.数字格式化 

  【<%#Container.DataItem("price"%>的结果是500.0000,怎样格式化为500.00?】 

<%#Container.DataItem("price","{0:¥#,##0.00}"%> 

int i=123456; 
string s=i.ToString("###,###.00"
18.日期格式化 

  【aspx页面内:<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date"%> 

  显示为: 2004-8-11 19:44:28 

  我只想要:2004-8-11 】 

<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}"%> 
  应该如何改? 

  【格式化日期】 

  取出来,一般是object((DateTime)objectFromDB).ToString("yyyy-MM-dd"

  【日期的验证表达式】 

  A.以下正确的输入格式: [2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31] 

^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\[0-5][0-9])((\s)|(\[0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$ 
  B.以下正确的输入格式:[0001-12-31], [9999 09 30], [2002/03/03] 

^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$ 
  【大小写转换】 

HttpUtility.HtmlEncode(string); 
HttpUtility.HtmlDecode(string) 
  19.如何设定全局变量 

  Global.asax中 

  Application_Start()事件中 

  添加Application[属性名] = xxx; 

  就是你的全局变量 

  20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口? 

  HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank" 

  【ASPNETMENU】点击菜单项弹出新窗口 

  在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如: 

<?xml version="1.0" encoding="GB2312"?> 
<MenuData ImagesBaseURL="images/"> 
<MenuGroup> 
<MenuItem Label="内参信息" URL="Infomation.aspx" > 
<MenuGroup ID="BBC"> 
<MenuItem Label="公告信息" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/> 
<MenuItem Label="编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" /> 
...... 
  最好将你的aspnetmenu升级到1.2版 

  21.读取DataGrid控件TextBox值 

foreach(DataGrid dgi in yourDataGrid.Items) 

 TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId"
 tb.Text.... 

  23.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能? 

  〖思归〗 

<asp:TemplateColumn HeaderText="数量"> 
<ItemTemplate> 
<asp:TextBox id="ShuLiang" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang"%>’ 
onkeyup="javascriptoCal()" 
/> 

<asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^\d+$" /> 
</ItemTemplate> 
</asp:TemplateColumn> 

<asp:TemplateColumn HeaderText="单价"> 
<ItemTemplate> 
<asp:TextBox id="DanJian" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_DanJian"%>’ 
onkeyup="javascriptoCal()" 
/> 

<asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^\d+(\.\d*)?$" /> 

</ItemTemplate> 
</asp:TemplateColumn> 

<asp:TemplateColumn HeaderText="金额"> 
<ItemTemplate> 
<asp:TextBox id="JinE" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_JinE"%>’ /> 
</ItemTemplate> 
</asp:TemplateColumn><script language="javascript"> 
function DoCal() 

 var e = event.srcElement; 
 var row = e.parentNode.parentNode; 
 var txts = row.all.tags("INPUT"
 if (!txts.length || txts.length < 3) 
  return; 

 var q = txts[txts.length-3].value; 
 var p = txts[txts.length-2].value; 

 if (isNaN(q) || isNaN(p)) 
  return; 

 q = parseInt(q); 
 p = parseFloat(p); 

 txts[txts.length-1].value = (q * p).toFixed(2); 

</script> 

24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。 

page_load 
page.smartNavigation=true 
  25.在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ? 

private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e) 

 for(int i=0;i<e.Item.Cells.Count-1;i++) 
  if(e.Item.ItemType==ListItemType.EditType) 
  { 
   e.Item.Cells.Attributes.Add("Width", "80px" 
  } 

  26.对话框 

private static string ScriptBegin = "<script language=\"javascript\">"; 
private static string ScriptEnd = "</script>"; 

public static void ConfirmMessageBox(string PageTarget,string Content) 

 string ConfirmContent="var retvalue=window.confirm(’"+Content+"’);"+"if(retvalue){window.location=’"+PageTarget+"’;}"; 

 ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd; 

 Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler; 
 ParameterPage.RegisterStartupScript("confirm",ConfirmContent); 
 //Response.Write(strScript); 

  27. 将时间格式化:string aa=DateTime.Now.ToString("yyyy年MM月dd日"

  1.1 取当前年月日时分秒 

currentTime=System.DateTime.Now; 
  1.2 取当前年 

int 年= DateTime.Now.Year; 
  1.3 取当前月 

int 月= DateTime.Now.Month; 
  1.4 取当前日 

int 日= DateTime.Now.Day; 
  1.5 取当前时 

int 时= DateTime.Now.Hour; 
  1.6 取当前分 

int 分= DateTime.Now.Minute; 
  1.7 取当前秒 

int 秒= DateTime.Now.Second; 
  1.8 取当前毫秒 

int 毫秒= DateTime.Now.Millisecond; 
  28.自定义分页代码: 

  先定义变量 : 

public static int pageCount; //总页面数 
public static int curPageIndex=1; //当前页面 
  下一页: 

if(DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1)) 

 DataGrid1.CurrentPageIndex += 1; 
 curPageIndex+=1; 


bind(); // DataGrid1数据绑定函数 
  上一页: 

if(DataGrid1.CurrentPageIndex >0) 

 DataGrid1.CurrentPageIndex += 1; 
 curPageIndex-=1; 


bind(); // DataGrid1数据绑定函数 
  直接页面跳转: 

int a=int.Parse(JumpPage.value.Trim());//JumpPage.value.Trim()为跳转值 

if(a<DataGrid1.PageCount) 

 this.DataGrid1.CurrentPageIndex=a; 


bind(); 
29.DataGrid使用: 

  添加删除确认: 

private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 

 foreach(DataGridItem di in this.DataGrid1.Items) 
 { 
  if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem) 
  { 
   ((LinkButton)di.Cells[8].Controls[0]).Attributes.Add("onclick","return confirm(’确认删除此项吗?’);"
  } 
 } 

  样式交替: 

ListItemType itemType = e.Item.ItemType; 

if (itemType == ListItemType.Item  

 e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#FFFFFF’;"; 
 e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;" ; 

else if( itemType == ListItemType.AlternatingItem) 

 e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#a0d7c4’;"; 
 e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;" ; 

  添加一个编号列: 

DataTable dt= c.ExecuteRtnTableForAccess(sqltxt); //执行sql返回的DataTable 
DataColumn dc=dt.Columns.Add("number",System.Type.GetType("System.String"); 

for(int i=0;i<dt.Rows.Count;i++) 

 dt.Rows["number"]=(i+1).ToString(); 


DataGrid1.DataSource=dt;&nbs
posted on 2007-08-12 15:11  LanceLang  阅读(673)  评论(0)    收藏  举报
使用Live Messenger联系我
关闭