各种数据库总结与页面传值及小技巧等杂汇

一。一段代码的实现

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="News_test" %>

<!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>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 32px; WIDTH: 752px; POSITION: absolute; TOP: 16px; HEIGHT: 312px" cellSpacing="0" cellPadding="0" width="752" border="0">
            <TR>
                <TD style="HEIGHT: 29px"><FONT face="宋体">DataList分页技术和超级链接</FONT></TD>
            </TR>
            <TR>
                <TD style="HEIGHT: 252px">
                <asp:datalist id="DataList1" runat="server" Width="576px" Height="96px">
                     <HeaderTemplate>
                            定单编号<td>
                            员工编号<td>
                            定单日期<td>
                            运费<td>
                            运往所在城市
                     </HeaderTemplate>

                     <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem,"OrderID")%> <td>
                        <%# DataBinder.Eval(Container.DataItem,"CustomerID")%> <td>
                        <%# DataBinder.Eval(Container.DataItem,"OrderDate")%> <td>
                        <%# DataBinder.Eval(Container.DataItem,"Freight")%>  <td>
                        <%# DataBinder.Eval(Container.DataItem,"ShipCity")%>
                     </ItemTemplate>
                 </asp:datalist>
                 </TD>
                </TR>
                <TR>
                    <TD><FONT face="宋体">

            <asp:linkbutton id="FirstLB" runat="server" OnCommand="LinkButton_Click" CommandName="first">第一页</asp:linkbutton>&nbsp;
            <asp:linkbutton id="PreviousLB" runat="server" OnCommand="LinkButton_Click" CommandName="prev">上一页</asp:linkbutton>&nbsp;
            <asp:linkbutton id="NextLB" runat="server" OnCommand=LinkButton_Click CommandName="next">下一页</asp:linkbutton>&nbsp;
            <asp:linkbutton id="EndLB" runat="server" OnCommand=LinkButton_Click CommandName="end">最后一页</asp:linkbutton>&nbsp;&nbsp;
            总<asp:label id="TotalLbl" runat="server"></asp:label>页 当前第<asp:label id="CurrentLbl" runat="server"></asp:label>页
            <asp:linkbutton id="JumpLB" runat="server" OnCommand=LinkButton_Click CommandName="jump">跳到</asp:linkbutton>第
            <asp:textbox id="TextBox1" runat="server" Width="90px"></asp:textbox>
            页</FONT></TD>
            </TR>
            </TABLE>
    </div>
    </form>
</body>
</html>
-------------------------------------------------
后台代码:
----------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public partial class News_test : System.Web.UI.Page
{
    int CurrentPage;//当前页数
    int PageSize;   //每页条数
    int PageCount;  //总页数
    int RecordCount;//总条数
    private void Page_Load(object sender, System.EventArgs e)
    {
        // 在此处放置用户代码以初始化页面


        PageSize = 10;//每页10条记录
        

        if (!Page.IsPostBack)
        {            
             CurrentPage = 0;//当前页习惯设为0
            ViewState["PageIndex"] = 0;//页索引也设为0


            //计算总共有多少记录
            RecordCount = CalculateRecord();


            //计算总共有多少页
            if (RecordCount % PageSize == 0)
            {
                PageCount = RecordCount / PageSize;
            }
            else
            {
                PageCount = RecordCount / PageSize + 1;
            }

            this.TotalLbl.Text = PageCount.ToString();//显示总页数
            ViewState["PageCount"] = PageCount;//会话session 对整个 application 有效 ,而视图状态 viewstate相当于某个页面的 session

            this.DataListBind();//不可以放在初始化条件之前就绑定,那样的话,如果仅有一页的数据,“下一页”页仍然显示
            
        }


    }


    //计算总共有多少条记录
    private int CalculateRecord()
    {
        try
        {
            int recordCount;
            SqlConnection con = new SqlConnection("server=127.0.0.1;database=Northwind;uid=sa;pwd=sa");//数据库使用Northwind;
            con.Open();

            string sql = "select count(*) as count from orders";
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader sdr = cmd.ExecuteReader();

            if (sdr.Read())
            {
                recordCount = Int32.Parse(sdr["count"].ToString());                
            }


            else
            {
                recordCount = 0;
            }

            sdr.Close();
            con.Close();
            return recordCount;
        }


        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }


    //将数据绑定到Datalist控件
    public void DataListBind()
    {
        try
        {
            int StartIndex = CurrentPage * PageSize;//设定导入的起终地址
            string sql = "select * from orders";
            DataSet ds = new DataSet();
            SqlConnection con = new SqlConnection("server=127.0.0.1;database=Northwind;uid=sa;pwd=sa");
            con.Open();

            SqlDataAdapter sda = new SqlDataAdapter(sql, con);
            sda.Fill(ds, StartIndex, PageSize, "orders");//这是sda.Fill方法的第一次重载,里面的变量分别是数据集DataSet ,开始记录数StartRecord,最大的记录数MaxRecord,数据表名TableName
            this.DataList1.DataSource = ds.Tables["orders"].DefaultView;
            this.DataList1.DataBind();
            this.PreviousLB.Enabled = true;
            this.NextLB.Enabled = true;
            if (CurrentPage == (PageCount - 1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用
            if (CurrentPage == 0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用
            this.CurrentLbl.Text = (CurrentPage + 1).ToString();//当前页数

        }


        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

  


    public void LinkButton_Click(Object sender, CommandEventArgs e)//自己编写的按钮点击事件
    {
        CurrentPage = (int)ViewState["PageIndex"];//获得当前页索引
        PageCount = (int)ViewState["PageCount"];//获得总页数


        string cmd = e.CommandName;

        //判断cmd,以判定翻页方向


        switch (cmd)
        {
            case "prev"://上一页
                if (CurrentPage > 0) CurrentPage--;
                break;

            case "next":
                if (CurrentPage < (PageCount - 1)) CurrentPage++;//下一页
                break;

            case "first"://第一页
                CurrentPage = 0;
                break;

            case "end"://最后一页
                CurrentPage = PageCount - 1;
                break;

            case "jump"://跳转到第几页
                if (this.TextBox1.Text.Trim() == "" || Int32.Parse(this.TextBox1.Text.Trim()) > PageCount)//如果输入数字为空或超出范围则返回
                {
                    return;
                }
                else
                {                    
                    CurrentPage = Int32.Parse(this.TextBox1.Text.ToString()) - 1;
                    break;
                }
        }
        ViewState["PageIndex"] = CurrentPage;//获得当前页

        this.DataListBind();//重新将DataList绑定到数据库


    }

}

]]> - http://www.gois.cn/blog/default.asp?id=74 - 755414@gmail.com(SOSOS) - - Wed,13 Dec 2006 21:42:36 +0800 http://www.gois.cn/blog/default.asp?id=74 - - 一.用SqlConnection连接SQL Server

 

1..加入命名空间

using System.Data.SqlClient;

2.连接数据库

SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "user id=sa;password=sinofindb;initial catalog=test;data source=127.0.0.1;Connect Timeout=30";
myConnection.Open();

 

改进(更通用)的方法:

string MySqlConnection="user id=sa;password=sinofindb;Database =test;data source=127.0.0.1;Connect Timeout=30";
SqlConnection myConnection = new SqlConnection(MySqlConnection);
myConnection.Open();

 

二。用OleDbConnection连接


1.加入命名空间

using System.Data.OleDb;
 

2.连接sql server

string MySqlConnection="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;Integrated Security=SSPI;";

SqlConnection myConnection = new SqlConnection(MySqlConnection);
myConnection.Open();

 

3.连接Access(可通过建立.udl文件获得字符串)

string MySqlConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/db2000.mdb;

Persist Security Info=False;


4.连接Oracle(也可通过OracleConnection连接)

string MySqlConnection="Provider=MSDAORA;Data Source=db; user id=sa;password=sinofindb";

 

三.创建Command对象

 
1.SqlCommand 构造函数

①初始化 SqlCommand 类的新实例。public SqlCommand();

SqlCommand myCommand = new SqlCommand();

 

②初始化具有查询文本的 SqlCommand 类的新实例。public SqlCommand(string);

String mySelectQuery = "Select * FROM mindata";
SqlCommand myCommand = new SqlCommand(mySelectQuery);
③初始化具有查询文本和 SqlConnection 的SqlCommand类实例。

Public SqlCommand(string, SqlConnection);

String mySelectQuery = "Select * FROM mindata";
string myConnectString = "user id=sa;password=;database=test;server=mySQLServer";
SqlConnection myConnection = new SqlConnection(myConnectString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
 

④初始化具有查询文本、SqlConnection 和 Transaction 的 SqlCommand 类实例。

public SqlCommand(string, SqlConnection, SqlTransaction);

SqlTransaction myTrans = myConnection.BeginTransaction();
String mySelectQuery = "Select * FROM mindata";
string myConnectString = "user id=sa;password=;database=test;server=mySQLServer";
SqlConnection myConnection = new SqlConnection(myConnectString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection, myTrans);
 

2.建立SqlCommand与SqlConnection的关联。

myCommand.Connection = myConnection;

或者:SqlCommand myCommand = myConnection.CreateCommand;

 

3.设置SqlCommand的查询文本。

myCommand.CommandText = "Select * FROM mindata";

或者第2种构造:SqlCommand myCommand = new SqlCommand(mySelectQuery);

给SqlCommand对象提供两个查询字符串,每个查询字符串访问不同的表,返回不同的结果集。

两个查询语句用分号分隔。

 

4. 执行命令。

ExecuteReader
 返回一行或多行
 
ExecuteNonQuery
 对 Connection 执行 Transact-SQL 语句并返回受影响的行数(int)
 
ExecuteScalar
 返回单个值(如一个聚合值).返回结果集中第一行的第一列。忽略额外的列或行
 
ExecuteXmlReader
 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。
 

 

SqlDataReader myReader = myCommand.ExecuteReader();

或SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

   while(myReader.Read()) //循环读取数据
   {
      Console.WriteLine(myReader.GetString(0));// 获取指定列的字符串形式的值
      Console.WriteLine(myReader. GetValue(1));// 获取以本机格式表示的指定列的值
    }
 

CommandText = "select count(*) as NumberOfRegions from region";
Int count = (int) myCommand.ExecuteScalar();

 

关于OleDbCommand对象的使用。

 

四.DataReader的使用

1.遍历结果集

while (myReader.Read())
  Console.WriteLine("/t{0}/t{1}", myReader.GetInt32(0), myReader.GetString(1));
myReader.Close();
 

2.使用序数索引器。

while (myReader.Read())
  Console.WriteLine("/t{0}/t{1}", myReader[0].ToString(), myReader[1].ToString());
myReader.Close();

 
3.使用列名索引器。

while (myReader.Read())
  Console.WriteLine("/t{0}/t{1}", myReader["code].ToString(), myReader["name"].ToString());
myReader.Close();

 

4.使用类型访问器。

public char GetChar(int i); 获取指定列的单个字符串形式的值
public DateTime GetDateTime(int i); 获取指定列的 DateTime 对象形式的值
public short GetInt16(int i); 获取指定列的 16 位有符号整数形式的[C#]
public string GetString(int i); 获取指定列的字符串形式的值


5.得到列信息。

myReader.FieldCount     获取当前行中的列数
myReader.GetFieldType(序号)   获取是对象的数据类型的 Type
myReader.GetDataTypeName(序号)  获取源数据类型的名称
myReader.GetName(序号)     获取指定列的名称
myReader.GetOrdinal(序号)   在给定列名称的情况下获取列序号


6.得到数据表的信息。

myReader.GetSchemaTable()   返回一个 DataTable
 

7.操作多个结果集。
myReader.NextResult()     使数据读取器前进到下一个结果集
do
{
  while (myReader.Read())
  Console.WriteLine("/t{0}/t{1}", myReader.GetInt32(0), myReader.GetString(1));
}
while(myReader.NextResult());


五.DataAdapter

 
1.创建SqlDataAdapter
初始化 SqlDataAdapter 类的新实例。
public SqlDataAdapter();
将指定的 SqlCommand 作为SelectCommand 属性,初始化 SqlDataAdapter 类的新实例。
public SqlDataAdapter(SqlCommand);
用 selectcommand字符串 和 SqlConnection对象初始化SqlDataAdapter 类的新实例。
public SqlDataAdapter(string, SqlConnection);
用 selectcommand字符串 和 一个连接字符串 初始化SqlDataAdapter 类的新实例。
public SqlDataAdapter(string, string);


2.DataAdapter和SqlConnection,SqlCommand建立关联。
  1.DataAdapter在构造参数时建立
  2.SqlDataAdapter adapter = new SqlDataAdapter();
     adapter.SelectCommand = new SqlCommand(query, conn);

 
3.DataAdapter.Fill()方法。

在 DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行,并创建一个名为“Table”的 DataTable。
public override int Fill(DataSet);
在 DataSet 中添加或刷新行以匹配使用 DataSet 和 DataTable 名称的数据源中的行。
 public int Fill(DataSet, string);


在 DataSet 的指定范围中添加或刷新行以匹配使用 DataSet 和 DataTable 名称的数据源中的行。

 public int Fill(DataSet, int, int, string);


在 DataTable 中添加或刷新行以匹配使用 DataTable 名称的数据源中的行。
 public int Fill(DataTable);

 
在 DataTable 中添加或刷新行以匹配使用指定 DataTable 和 IDataReader 名称的数据源中的行。
 protected virtual int Fill(DataTable, IDataReader);

在 DataTable 中添加或刷新行以匹配使用 DataTable 名称、指定的 SQL Select 语句和 CommandBehavior 的数据源中的行。
 protected virtual int Fill(DataTable, IDbCommand, CommandBehavior);
 

六.DataTable 类

七.DataColumn 类

八.DataRow 类
 

九.DataSet 类
1.创建DataSet 对象

初始化 DataSet 类的新实例。
public DataSet();
 
用给定名称初始化 DataSet 类的新实例。
public DataSet(string);
 

2.用DataAdapter填充DataSet

   DataSet myds=new DataSet();
adapter.fill(myds)
adapter.fill(myds,”表名”);  用一个表去填充DataSet.

 

十. DataTableCollection 类。    表示 DataSet 的表的集合。

DataTableCollection dtc = ds.Tables;
DataTable table = dtc[“表名”];
String strExpr = "id > 5";
String strSort = "name DESC";
DataRow[] foundRows = customerTable.Select( strExpr, strSort,);

进行动态的筛选和排序。
DataTable.Select() 方法 :  获取 DataRow 对象的数组,

①获取所有 DataRow 对象的数组。
public DataRow[] Select();

 

②按主键顺序(如没有主键,则按照添加顺序),获取与筛选条件相匹配的所有 DataRow 对象的数组。
public DataRow[] Select(string);


③获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。

public DataRow[] Select(string, string);


④获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。

public DataRow[] Select(string, string, DataViewRowState);

 

十一。DataView 类 : 是DataTable内容的动态视图。

1.  创建对象

初始化 DataView 类的新实例。

  public DataView();

用指定的 DataTable 初始化 DataView 类的新实例。

  public DataView(DataTable);

用指定的 DataTable、RowFilter、Sort 和 DataViewRowState 初始化 DataView 类的新实例。

  public DataView(DataTable, string, string, DataViewRowState);


DataView myview = new DataView(ds.Tables["Suppliers"], "id > 5", "name DESC",
DataViewRowState.CurrentRows);


2 .得到DataView的行数据。

   foreach (DataRowView myrowview in myview)
   {
     for (int i = 0; i < myview.Table.Columns.Count; i++)
        Console.Write(myrowview [i] + "/t");
     Console.WriteLine();
   }

]]> - http://www.gois.cn/blog/default.asp?id=69 - 755414@gmail.com(SOSOS) - - Tue,28 Nov 2006 15:42:49 +0800 http://www.gois.cn/blog/default.asp?id=69 - -       Const int intTwo = 2 (必须声明的同时赋值)

五,运算符:按优先级顺序排列
  算术运算符:前缀的++和-- ,前缀一元的+和- 乘 * 除 / 求余 % 加 + 减 -
  位移运算符:<<,>>
  比较运算符:小于 < 大于 > 小于等于 <= 大于等于 >=
  比较运算符:==,!=
  逻辑运算符:&
  逻辑运算符:^
  逻辑运算符:|
  逻辑运算符:&&
  逻辑运算符:||
  比较运算符:等于 = *= /= %= += -= <<= >>= &= ^=  |=
  后缀的++和--

六,名称空间
         本帖相关代码   [全显模式]

      using system;  //system是.net FrameWork应用程序根命名空间,之后就能在全局名称空间引用system中的代码。
  namespace 空间名称
   {
      using 空间名称2.代码2; //之后就能在代码1处直接引用代码2
      代码1;
      namespace 空间名称2
      {
      代码2;
      }
   }
     


七,条件语句
      A,If语句:通用判断
         本帖相关代码   [全显模式]

      If (条件1)
      代码1;
    Else
      代码2;

    If (条件1)
    {}
    Else
    {}
     


B,Switch语句:用于同条件多结果判断
         本帖相关代码   [全显模式]


      Switch (条件)
     {
      Case 结果1:
      代码1;
      break;
      Case 结果2:
      代码2;
      break;
      Case 结果3:
      代码3;
      goto Case  结果2; //此时Case..相当于一个Label
      Case 结果4:
      代码4;
      Return;
      Case 结果5:
      Case 结果6:
      Case 结果7:
      代码567; //只要满足上面三个Case之一就执行。
      break;
      ...
      Default:
      代码;
      break;
     }


C,三元运算语句:(条件)?True结果:False结果
      常用于简单赋值语句:string myString = (myInteger<10)?"Less than 10":"Great than or equal to";
  或者用于简单格式化文本语句:Console.WriteLine("I am {0} year{1} old.",myinteger,myinteger==1?"":"s"); ]]> - http://www.gois.cn/blog/default.asp?id=68 - 755414@gmail.com(SOSOS) - - Tue,28 Nov 2006 15:41:43 +0800 http://www.gois.cn/blog/default.asp?id=68 - -   1,普通变量:
  (1),命名规则:字母或_或@ + 字母或_或数字 (/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)
  (2),声明变量: 变量类型 变量名
  变量赋值:变量 = 要赋的值
  C#变量被访问之前必须被初始化;否则编译时会报错。因此,不可能访问一个未初始化变量(如不确定的指针、超出数组边界的表达式)。变量在使用前最好习惯是要先声明和初始化。
  (3)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。
   本帖相关代码   [全显模式]

int i;
string text; //在循环外未初始化
for (i = 0;i<10;I++)
{
  text = "Line" + Convert.ToString(i); //在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。
  Console.WriteLine( "{0},text);
}
Console.WriteLine("
Last txet output in loop:{0},text); //出错。改正方法是在循环外初始化:string text="";


      (4)命名约定:简单的用camelCase,复杂的用PascalCase
  (5)变量的七种类型:
   本帖相关代码   [全显模式]

class A
{
  public static int x; //静态变量,存在期从类装载直到该程序结束。
  int y; //非静态变量,或实例变量,从类实例创建到实例空间释放。

  /*v[0]是数组元素,a是值参数,b是引用参数,c是输出参数 */
  void F( int[] v, int a,ref int b,out int c){
    int i = 1; //局部变量,不会被初始化
    c = a + b++; //
  }
}

  2,枚举
    enum 枚举名:枚举值类型(默认是int,默认赋值0,1,2...)
    {
     枚举值1=...,
     枚举值2=...,
     枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1
     ...
    }
    枚举名 变量名=枚举名.枚举值

   本帖相关代码   [全显模式]

namespace Ch05Ex02
{
  enum orientation:byte
  {
    north=1,
    south=2,
    east=3,
    west=4
  }
///Class1's Desciption
class Class1
  {
  static void Main(string[] args)
    {
        byte directionByte;
        string directionString;
        orientation myDirection = orientation.north;
        Console.WriteLine( "mydirection = {0}", myDirection);
        directionByte = ( byte)myDirection; //因为enum存得下byte,所以理论上可以正确地反过来转换,但逻辑上不一定正确。myDirection = (orientation)myByte;
        directionString = Convert.ToString(myDirection); //等价命令是directionString = myDirection.ToString();
//因为不单是把枚举变量值转存到string变量中,所以不能用string(mydirection);
//反向转换命令是orientation myDirection = (orientation)Enum.Parse(typeof(orientation),myString);但由于enum不一定存得下 string,所以可能出错。如myString赋值为North,就不能映射到orientation中的north,出错。
        Console.WriteLine( "byte equivalent = {0}", directionByte);
        Console.WriteLine( "string equivalent = {0}", directionString);
    }
  }
}

  3,结构
    struct 结构名:
    {
     访问方式1 变量类型1 变量名1;//访问方式public/private
     访问方式2 变量类型2 变量名2;
     ...
    }
    结构名 结构变量名;
    结构变量名.枚举值=...;

  4,一维数组
  变量类型[] 数组名 = new 变量类型[元素个数]{元素0,元素1,元素2...}//元素个数必须是整数或者整数常量,而且必须与后面的元素列值个数相同,否则出错。元素个数的new声明和后面的元素列值可以只选一个,就能声明并初始化数组。
遍历方法
  A,For循环到.Length

for(i=0,i<friendNames.Length,i++)
{
  Console.WriteLine(friendNames[i]);
}
  B,Foreach进行只读访问
foreach(string listName in friendNames)
{
  Console.WriteLine(listName);
}
  5,二维数组(多维)
    变量类型[,] 数组名 = new 变量类型[一维元素个数,二维元素个数]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}


  6,直角数组(交错数组,数组中的数组)
  7,字符串操作:
   本帖相关代码   [全显模式]

string myString = "I have a dream.";
char myChar = myString[2]; //把string变量当作只读的char数组使用,不能改写myString[2]
char[] myChars = myString.ToCharArray();

char[]separator = {' '}; //设定分隔符
string[] myWords =myString.Split(separator); //分隔成数组
Console.WriteLine( "myString have {0} chars",myString.Length);
myString=myString.ToLower(); //转小写
myString=myString.ToUpper(); //转大写
myString=myString.Trim(); //删前后空格
myString=myString.TrimStart(); //删前空格
myString=myString.TrimEnd(); //删后空格
myString=myString.PadLeft(位数); //前补空格到指定位数
myString=myString.PadRight(位数); //后补空格到指定位数
myString=myString.PadLeft(位数,字符); //前补指定字符到指定位数
char[] trimChars = { "e", "#", "*"};
myString = myString.trim(trimChars); //删指定字符
]]> - http://www.gois.cn/blog/default.asp?id=67 - 755414@gmail.com(SOSOS) - - Tue,28 Nov 2006 15:38:44 +0800 http://www.gois.cn/blog/default.asp?id=67 - -   /*注释语句包含在"反斜杠* "和" *反斜杠"中,
    或者两个反斜杠和换行符之中,
    或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取)
    要注意注释中的/,该续行符会把下一行连上来一起注释掉出错。 */
      本帖相关代码   [全显模式]

    static void Main(string[] args)
  {//语句块包含在{}中
   int MyInterger;//语句以;结束
   string  MyString;///忽略空白字符(空格/回车/TAB)
   MyInterger = 17;
   }
     

  //要注意防止注释嵌套出错,可用#if,#endif预处理语句。

二,数据类型
  1,基本型/内置型  用户自定义型
  A,内置类型:CS使用.net FrameWork库中的数据类型
  sbyte = System.SByte,...
      类型    字节数      解释
      byte      1            无符号字节型
      sbyte      1            有符号字节型
      short      2              有符号短字节型
      ushort    2            无符号短字节型
      int          4            有符号整型
      uint        4            无符号整型
      long        8            有符号长整型
      ulong      8            无符号长整型
      float      4            浮点数
      double    8          双精度数
      decimal  8            固定精度数
      string    unicode    字串型
      char    unicode      字符型
      bool    真假布尔型//只接受true和false两种值。不接受任何整数类型。

  B,用户定义类型包括:
      类类型(class)
      结构类型(struct)
      接口类型(interface)

      2,值类型(Value Types)和引用类型(Reference Types)
      A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)
  B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。
  引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型
  结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。

  3,数据类型转换
  隐式转换:从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。
  显式转换
   本帖相关代码   [全显模式]

        static void Main(string[] args)
        {
            short shortResult, shortVal = 4;
            int integerVal = 67;
            long longResult;
            float floatVal = 10.5F;
            double doubleResult, doubleVal = 99.999;
            string stringResult, stringVal = "17";
            bool boolVal = true;

            Console.WriteLine("Variable Conversion Examples/n数据类型转换范例/n");
            doubleResult = floatVal * shortVal;
            Console.WriteLine("Implicit,->double:{0}*{1}->{2}", floatVal, shortVal, doubleResult);
            shortResult = (short)floatVal;
            Console.WriteLine("Implicit,->short:{0}->{1}", floatVal, shortResult);
            stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
            Console.WriteLine("Explicit,->string:/"{0}/"+/"{1}/"->{2}", boolVal, doubleVal, stringResult);
            longResult = integerVal + Convert.ToInt64(stringVal);
            Console.WriteLine("Mixed,->long {0}+{1}->{2}", integerVal, stringVal, longResult);

        }
]]> - http://www.gois.cn/blog/default.asp?id=63 - 755414@gmail.com(SOSOS) - - Mon,13 Nov 2006 13:43:59 +0800 http://www.gois.cn/blog/default.asp?id=63 - -  
控件名
 
简写
 
控件名
 
简写
  Web 窗体   Label  
lbl
  TextBox  
tb
  Button  
btn
  LinkButton  
lb
  HyperLink  
hl
  Repeator  
rpt
  ImageButton  
ib
  DropDownList  
ddl
  ListBox  
lb
  DataGrid  
dg
  DataList  
dl
  CheckBox  
cb
  CheckBoxList  
cbl
  RadioButton  
rb
  RadioButtonList  
rbl
  Image  
img
  Panel  
pnl
  Calender  
cld
  AdRotator  
ar
  Table  
tbl
  PlaceHolder  
ph
  Xml  
xml
  RequiredFieldValidator  
rfv
  CompareValidator  
cv
  RangeValidator  
rv
  RegularExpressionValidator  
rev
  ValidatorSummary  
vs
  CustomValidation  
cv
  Literal  
ltl
  TreeView  
tv
  数据   DataSet  
ds
  DataTable  
dt
  DataView  
dv
  SqlConnection  
sc
  SqlDataAdapter  
sda
  SqlCommand  
sc
  HTML   Label  
lbl
  Button  
btn
  Reset Button  
rb
  Submit Button  
sb
  Text Field  
tf
  Text Area  
tr
  File Field  
ff
  Password Field  
pf
  Checkbox  
cb
  Radio Button  
rb
  Hidden  
hdn
  Table  
tbl
  Flow Layout Panel  
flp
  Grid Layout Panel  
glp
  Image  
img
  Listbox  
lb
  常用词缩写   Argument  
Arg
  Maximum  
Max
  Buffer  
Buf
  Message  
Msg
  Clear  
Clr
  Minimum  
Min
  Clock  
Clk
  Multiplex  
Mux
  Compare  
Cmp
  Operating System  
OS
  Configuration  
Cfg
  Overflow  
Ovf
  Context  
Ctx
  Parameter  
Param
  Delay  
Dly
  Pointer  
Ptr
  Device  
Dev
  Previous  
Prev
  Disable  
Dis
  Priority  
Prio
  Display  
Disp
  Read  
Rd
  Enable  
En
  Ready  
Rdy
  Error  
Err
  Register  
Reg
  Function  
Fnct
  Schedule  
Sched
  Hexadecimal  
Hex
  Semaphore  
Sem
  High Priority Task  
HPT
  Stack  
Stk
  I/O System  
IOS
  Synchronize  
Sync
  Initialize  
Init
  Timer  
Tmr
  Mailbox  
Mbox
  Trigger  
Trig
  Manager  
Mgr
  Write  
Wr
  一些在软件中常用的反义词组  
add/remove
 
begin/end
 
create/destroy
 
insert/delete
 
first/last
 
get/release
 
increment/decrement
 
put/get
 
add/delete
 
lock/unlock
 
open/close
 
min/max
 
old/new
 
start/stop
 
next/previous
 
source/target
 
show/hide
 
send/receive
 
source/destination
 
cut/paste
 
up/down
]]> - http://www.gois.cn/blog/default.asp?id=57 - 755414@gmail.com(SOSOS) - - Fri,27 Oct 2006 23:35:23 +0800 http://www.gois.cn/blog/default.asp?id=57 - - 一位ASP.net初学者学习过程中整理的备忘录,包括“打开新的窗口并传送参数,为按钮添加对话框,删除表格选定记录,删除表格记录警告”等等常见问题的解决方法。

 

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 + "')");

}

★特别注意:【?id=】 处不能为 【?id =】

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.Cookies("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 横向滚动,纵向自动扩展

 <asp:panel  style="overflow-x:scroll;overflow-y:auto;"></asp:panel>

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"

http://dotnet.aspx.cc/exam/enter2tab.aspx

14.DataGrid超级连接列

DataNavigateUrlField="字段名" DataNavigateUrlFormatString="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.委托讨论

http://community.youkuaiyun.com/Expert/topic/2651/2651579.xml?temp=.7183191
http://dev.youkuaiyun.com/develop/article/22/22951.shtm

22.读取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="javascript:DoCal()"
   />

   <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="javascript:DoCal()"
   />

  <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[i].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);
 
  }

 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值