Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,可将通用代码提取,生成一个userControl, 在别的页面使用时直接拖入即可。
项目–添加新项项–web用户控件 , 在代码插入其中,在其它页面使用。

2,如有一个订单模块,要在多个页面中存在,可提取放入order.ascx之中,同时在其order.ascx.cs中编写插入功能,
这样在其它页面中只需简单的拖动,即可实现下单功能。

例:
在a页面中引入:

当页面载入时,也会载入 uc2的Page_Load事件

或者在A.cs 中指定要调用的方法并传参。 OrderTrace1.OrderNo = “123”; OrderTrace1.InitForm(); 完成参数在页面及userControl之间的共享!


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

.Net 2中5个数据源控件,GridView,DataList,Repeator ,DetailsView,FormView其中前3个用于呈现多列数据,后面2个用于呈现单列数据,即常用的数据明细.

griview优点:功能最强大,提供分页,编辑,删除,选择等等很多功能,使用最方便,直接拖拽到页面上,建立新的数据源,点几下鼠标就可以维护一个表的浏览、删除和修改了,而且是分页

缺点:占用系统资源大,他的分页是把整个表的数据取出来,到gridview上分页的,因此如果数据量比较大的时候,速度非常非常慢。效率极低。

综合以上考虑:gridview适合数据量小,效率要求不高的情况使用,比如后台。

repeater优点:功能简单,效率高,容易灵活控制生成的HTML代码,分页需要自己实现,整体来说,如果用习惯repeater就会喜欢上,适合前台使用。

缺点:功能简单。需要自己做更多的事情才能完成某个功能。

datalist:介于上面两者之间。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,界面:asp:Repeater用来重复执行,它有一个DataSource属性,可在onLoad时编码从数据库中取值,返回一个DataSet赋给此属性。完成数据的获取。
repeater1.DataSource = _consultingBL.GetData(SortId, gvPager.PageSize, gvPager.PageIndex);

在界面中显示数据库的值可用:<%# Eval("problem")%> problem为表中字段。


    
        
            
                 
            
            
                
<%# FormatString(Eval("customer"), 4)%>:
<%# Eval("problem")%>
 
<%# FormatString(Eval("expert"), 16)%>:
<%# Eval("answer")%>
 


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
执行分为在客户端与服务端执行

? <asp:Button ID=”Button1″ runat=”server” Text=”提交” onclick=”Button1_Click”
??????????????????? OnClientClick=”return confirm(‘Ok to post?’)”? />

onclick 在服务端执行
onclientclick 在客户端执行


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

ctrl + k ctrl + f


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1.? 使用QueryString变量

QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)
{
??? string s_url;
??? s_url = “b.aspx?name=” + Label1.Text;
??? Response.Redirect(s_url);
}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
??? Label2.Text = Request.QueryString[“name”];
}

2.? 使用Application 对象变量

Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)
{
??? Application[“name”] = Label1.Text;
??? Server.Transfer(“b.aspx”);
}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e)
{
??? string name;
??? Application.Lock();
??? name = Application[“name”].ToString();
??? Application.UnLock();
}

3.? 使用Session变量

想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)
{
??? Session[“name”] = Label.Text;
}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e)
{
??? string name;
??? name = Session[“name”].ToString();
}

4.? 使用Cookie对象变量

这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)
{
??? HttpCookie cookie_name = new HttpCookie(“name”);
??? cookie_name.Value = Label1.Text;
??? Reponse.AppendCookie(cookie_name);
??? Server.Transfer(“b.aspx”);
}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e)
{
??? string name;
??? name = Request.Cookie[“name”].Value.ToString();
}

5.? 使用Server.Transfer方法

这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。

a.aspx的C#代码

public string Name
{
??? get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
??? Server.Transfer(“b.aspx”);
}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
??? a newWeb;? //实例a窗体
??? newWeb = (source)Context.Handler;
??? string name;
??? name = newWeb.Name;
}


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
1,ado.net微软在.NET中创建分布式和数据共享应用程序的开发接口,它就是一组处理数据的类。

 2, 连接数据库的两种状态 -- 有连接,无连接。
    (1)有连接:用户得到的数据始终与数据源连接,直到应用程序结束。因数据是实时的,故可用连接状态来读取数据,以保持数据的最新。     
            好处:得到的数据总是最新的。同步问题易于解决,实时性高
            缺点:必须保持持续的网络连接,扩展性差。
    (2)无连接:从数据源得到数据后,这部分数据存储到内在中,可以进行数据的编辑,与更改。
            好处:可以在任何时间操作,不独占连接。
            缺点:数据不是实时的,要解决同步问题。

 3,有连接的操作:主要用来数据的读取。连接数据步骤:
       (1)声明SqlConnecton对象,并指定连接字符串属性
       (2)声明SqlCommand对象,指定sql命令及SqlConnection
       (3)SqlCommnad执行方法,返回数据集
       (4)关闭数据集,关闭Connection

        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=192.168.16.55;Initial Catalog=BRM;persist security info=False;user id=BRM;password=BRM2009;min pool size=1;max pool size=100;" ;
        conn.Open();
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "SELECT * FROM bdOrder";
        SqlDataReader  dr = command.ExecuteReader();
        GridView1.DataSource = dr;
        GridView1.DataBind();
        dr.Close();
        conn.Close();  //注若在GridView获取数据之前Close关闭,则将收不到数据。但在无连接进可在之前关闭,因为数据已存入在内存中。

       注:利用SqlConnection, SqlCommand, SqlDataReader默认是支持SqlServer的,若想支持MySql,项目中要引入具体的dll文件 如引入MySql.Data.dll, 在程序中using MySql.Data.MySqlClient;利用MySqlConnection,MySqlCommand,MySqlDataReader即可。
SqlCommand 常用方法:
    (1)更新删除操作:ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数, int类型              返回数据集操作: ExecuteReader 已重载。 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。 返回一个数据操作: ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 
         返回一个XML: ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。 
        
  (2) 传参
             1),直接在CommandText写参数;如:command.CommandText = "SELECT * FROM bdOrder WHERE id>" + id;2),利用SqlParameter传参,防止Sql注入
             command.CommandText = "SELECT * FROM mdCustomerType WHERE ORDERBY orderby";
                          SqlParameter sp = new SqlParameter( "@orderby" ,8);  
                          command.Parameters.Add(sp);
        注:不同的数据库用的符号是不同的,SqlServer用 “@”, 而MySql 则用 “? 

4, 无连接的操作, 区别在于执行数据操作时用的是SqlDataAdapter,可利用SqlCommand构造Sql语句,并传参。最后是SqlDataAdapter来执行 返回的结果用Fill方法填充DataSet或DataTable
        (1)string ConnectionString = "Data Source=192.168.16.55;Initial Catalog=BRM;persist security info=False;user id=BRM;password=BRM2009;min pool size=1;max pool size=100;";
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConnectionString;
        conn.Open();
        SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM bmdCustomer",conn);
        DataSet ds = new DataSet();
        sda.Fill( ds );
        conn.Close();             //conn可提前关闭
        GridView1.DataSource = NoConnection(conn);
        GridView1.DataBind();
//操作也可用: 
       SqlDataAdapter sda = new SqlDataAdapter();
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "SELECT * FROM mdCustomerType WHERE ORDERBY >@orderby";
        SqlParameter sp = new SqlParameter("@orderby", 10);
        command.Parameters.Add(sp);
        sda.SelectCommand = command;   //这样就可传参。
       其实SqlDataAdapter就是SqlCommand的适配器,主要内容由SqlCommand完成构建,它只是负责执行。

     (2)SqlDataAdapter 类似于SqlCommand 的Exec方法
               查询:  sda.SelectCommand;
               插入:  sda.InsertCommand;
               更新:  sda.UpdateCommand;
               删除:  sda.DeleteCommand;

       
5,执行存储过程
      指定SqlCommand的CommandType, CommandText即可
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;   //默认执行的是Sql语句
        cmd.CommandText = "bmdCustomer_sel";                      //存储过程名称, 默认是Sql语句
        SqlParameter[] storedParameters = {
                                          new SqlParameter( "@TranType", "ID" ),
                                          new SqlParameter( "@ID", "277" )
                                          };
        foreach (SqlParameter sp in storedParameters) {
            cmd.Parameters.Add( sp );
        }

        SqlDataReader dr = cmd.ExecuteReader();

注:CommandType指定类型:(1)Text :默认,CommandText为Sql命令。
                                            (2)TableDirect CommandText为表的名称。 (3)StoredProcedure CommandText为存储过程的名称。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,J2EE支持多平台,单一语言;.Net支持多语言,单一平台

2,页面数据提交,.net一般写在按纽的onClick事件中,而java要配置from的action

3,Visual Studio比较Eclipse

  • Visual Studio的工具窗口占用了过多的空间,没有Eclipse简洁
  • Eclipse编辑器右侧有个特殊区域代表了整个代码文件,断点、错误、警告、书签都会在这里标识出来,不论代码有多长,点击一下就可以定位,非常的方便。
  • 在Visual Studio里面定位代码,要么用鼠标滚轮上下翻动直到找到内容,要么从成员列表的组合框里选择,不论哪一种,都没有Eclipse来得简洁方便。
  • 重构功能比较初级
  • Visual Studio支持代码重构,Eclipse也支持,但是你比较一下两者的菜单就知道,它们对重构的支持程度完全不是同一个级别的
  • 缺少智能化的快速修复
  • Eclipse不仅找出编译错误,还能够为许多种类型的错误提供修复选项。
  • Eclipse是完全免安装的,Visual Studio要重启两次继续阅读