ASP.NET2.0

爲ASP.NET2.0配置數據源
在ASP.NET 2.0中提供了大量的Provider,以及Master Page、Theme/Skin等新技術,而這些技術都需要有一個數據庫的支持。而ASP.NET 2.0默認的是採用SQL Express,在實際開發中我們用的最多的還是Sql Server,因爲我們要進行一定的配置。
下面簡要敘述在ASP.NET 2.0中使用SQL Server 2K/2K5做支持數據庫的步驟:
  1. 在Visuaol Studio 2005的命令行環境中執行命令:aspnet_regsql。該工具可以爲ASP.NET 2.0在指定的SQL Server上建立或指定一個支持數據庫,默認名字爲aspnetdb
  2. 接下來需要修改配置文件,可以在通過修改$:WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG/machine.config來實現,但修改machine.config文件並不是一個好的方法,好在ASP.NET 2.0提供了在Web.Config文件中修改的辦法。
  3. 打開一個Web應用程序的Web.Config文件,添加如下配置節:
    <connectionStrings>
        
    <remove name="LocalSqlServer" />
        
    <add name="LocalSqlServer" connectionString="server=(local);trusted_connection=false;user id=sa;pwd=8848;database=aspnetdb" providerName="System.Data.SqlClient" />
    </connectionStrings>

    首先用remove去掉在machine.config中定義的LocalSqlSever連接配置,那個連接是指向本地安裝的Sql Express的;然後再重新添加一個LocalSqlServer數據庫連接指向想要設定的Sql Server服務器數據庫。
  4. 然後在<system.web>節點中去配置一個默認的使用LocalSqlServer數據連接的Provider,如下:
    <system.web>
        <membership defaultProvider="SqlMembershipProvider">
          <providers>
            <add connectionStringName="LocalSqlServer" name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          </providers>
        </membership>
    </system.web>

  5. 這樣配置文件就OK了。可以通過在VS中點擊Web Site菜單下的ASP.NET配置來進行測試是否已經成功。



VS 2005 現在對Web.config文件也支持智能感知(intellisense)了:

如果你的智能感知沒出來,可能是因爲名稱空間的關係:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

只要把上面這句改爲:
<configuration>

智能感知就可以出來了。

 

ADO.NET 2.0 中的ConnectionStringBuilder 

  對於所有開發人員來說,寫連接字符串永遠不是一件困難的事,但卻是一件很頭痛的事情。

看ADO.NET 2.0如何解決的
SqlConnectionStringBuilder connbuilder = new SqlConnectionStringBuilder();
connbuilder.DataSource 
= "localhost";
connbuilder.UserID 
= "someuser";
connbuilder.Password 
= "somepassword";
SqlConnection c 
= new SqlConnection (connbuilder.ConnectionString);
c.Open();

它至少解決了下面幾個問題
1、不用因爲記不住種類繁多的連接字符串而煩惱了.。
2、絕對不會寫錯連接字符串

ADO.NET 2.0 中的ConnectionStringBuilder
  在asp.net 2.0中,可以強制對viewstate進行分段傳輸了,使用的是Page.MaxPageStateFieldLength 屬性,可以設置viewstate中,每個頁面狀態字段的最大字節數。格式如下,要在WEB.CONFIG文件裏設置的:
    <pages  maxPageStateFieldLength="5" />
    其中,將設置把viewstate爲不超過5字節,如果實際的viewstate超過該值,將進行分段傳輸,但每個分段的大小依然不超過maxPageStateFieldLength中的設置值, 默認設置值爲-1,表示不對其進行分段傳輸。
ADO.NET 2.0 中的ConnectionStringBuilder
protected void Page_Load(object
 sender, EventArgs e)
 2 
    {
 3         PostBackOptions options = new PostBackOptions(Button1,string
.Empty);
 4 

 5         StringBuilder sb = new StringBuilder();
 6         if (Button1.CausesValidation && this.GetValidators(Button1.ValidationGroup).Count > 0
)
 7 
        {
 8             options.ClientSubmit = true
;
 9             options.PerformValidation = true
;
10             options.ValidationGroup =
 Button1.ValidationGroup;
11 

12             sb.Append("if (typeof(Page_ClientValidate) == 'function')");
13             sb.Append("if(Page_ClientValidate(/"" + Button1.ValidationGroup + "/")==false) return false;"
);
14 
        }
15         if (!string
.IsNullOrEmpty(Button1.PostBackUrl))
16             options.ActionUrl =
 HttpUtility.UrlPathEncode(Button1.ResolveClientUrl(Button1.PostBackUrl));
17 
        
18         sb.Append("this.disabled = true;"
);
19 
        sb.Append(ClientScript.GetPostBackEventReference(options));
20         sb.Append(";"
);
21         Button1.Attributes.Add("onclick"
, sb.ToString());
22     }
ADO.NET 2.0 中的ConnectionStringBuilder
在asp.net 2.0中,gridview是和sqldatasource控件綁定的,那麼如何得到sqldatasource返回的記錄的行數呢?比如sqldatasource控件中用select * from ....,如何返回其記錄行數?在.net 2.0中,可以通過sqldatasource的OnSelected事件實現,並且對select事件
SqlDataSourceStatusEventArgs參數中的AffectedRows屬性設置一下就可以了,具體核心代碼如下:
 protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
 {
   totalRows.Text = e.AffectedRows.ToString();
 }
  <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=(local);Initial Catalog=Northwind;user id=sa;password=123456;"  ProviderName="System.Data.SqlClient" SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers]" OnSelected="SqlDataSource1_Selected"></asp:SqlDataSource>

4.在asp.net 1.1中,當要在page_load頁面中,設置某個控件爲默認的焦點按鈕(也就是默認焦點是在這個控件上的),可能要用到javascript的代碼,而在ASP.NET 2.0中,不用這些麻煩了,在form代碼中,使用
  defaultbutton  defaultfocus屬性就可以了,比如
 <form id="Form1"

    defaultbutton="BtnSubmit"

    defaultfocus="TextBox1"

    runat="server">
則在頁面加載時,默認的button按鈕時btnsubmit,焦點默認就在texbox1上了

ADO.NET 2.0 中的ConnectionStringBuilder

在asp.net 1.1中,要做1個彈出的對話框的話,一般是在服務端的代碼中這樣寫:

btnClick.Attributes.Add("onclick", "return confirm('Are you sure?');");

現在在ASP.NET 2.0中,只要使用客戶端的代碼就可以拉,新多了個onclientclick,這樣寫
<asp:button id="btnClick" runat="server" OnClientClick="return confirm('Are you sure?');" text="Button"></asp:button>
5.自定義的頁面控件,
比如在ASP。NET 1。1中,要聲明自定義的頁面控件,
通常要在用到的每頁都要加入register prefix=........這樣的,很麻煩,而在asp.net 2.0中,如果你確定一個頁面自定義控件要在
整個項目中用到,只需要在WEB.CONFIG中加入
<system.web>
    <pages>

    <controls>

      <add tagPrefix="prefixname" namespace="namespacename "/>

    </controls>

   </pages>

</system.web>
其中prefixname爲控件的標識,namespace爲命名空間就可以了。 

 
在VS2005中,你會發現DataFormatString不起作用了。

        這時候,應該同時設置HtmlEncode爲false,DataFormatString纔會起作用:

       

<asp:BoundField HeaderText="DisplayText" DataField="FieldName" DataFormatString="{0:F2}" HtmlEncode="false">
    
<ItemStyle HorizontalAlign="Right" Width="60px"></ItemStyle>
    
<HeaderStyle HorizontalAlign="Right"></HeaderStyle>
</asp:BoundField>

 

ADO.NET 2.0 中的ConnectionStringBuilder

<connectionStrings>
<clear />
<add name="LocalSqlServer" connectionString=
"server=.;integrated security=sspi;database=aspnetdb"
/>
</connectionStrings>

TreeView的無刷新頁面展開子節點:
設置Treeview的EnableClientScript和PopulateNodesFromClient的屬性設爲"True",並在OnTreeNodePopulate事件代碼中爲該節點添加子節點。

    protected void TreeView1_TreeNodePopulated(object sender, TreeNodeEventArgs e)
    
{
        TreeNode currentNode 
= e.Node;

        
// 這裏爲currentNode添加子節點
    }

 

在服務器端代碼中設置頁面的缺省控件和缺省按鈕:
asp.net 2.0的Page類增加了“Form”屬性,設置Page.Form.DefaultButton和DefaultFocus爲缺省按鈕(輸入控件)的UniqueID即可。  

 

void Page_Init(object sender, EventArgs e)
{
    
this.Page.Form.DefaultFocus = TextBox1.UniqueID;
    
this.Page.Form.DefaultButton = Button1.UniqueID;
}

1/掩藏字段的處理:DataGrid可以將字段直接設置爲Visible=false,可以通過Cell[x].Text取到值。 GridView這個功能失效了,可以使用運行時來設定該列爲掩藏。處理RowDataBound事件。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   e.Row.Cells[5].Visible = false;
}
   2/ 獲取所選列的數據:DataGrid可以直接通過所選行來獲取,GridView同樣的代碼無法運行。GridView 可以通過GridViewRow來獲取。BtnAudit是模版列中的按鈕。
GridViewRow grdRow = (GridViewRow)btnAudit.Parent.Parent;

 string strId = grdRow.Cells[0].Text;
 string memberId = grdRow.Cells[5].Text;
  3/ 最終刪除一條數據之前進行確認,這個可以使用摸版列,在摸版列中放置按鈕控件,其中有一個客戶端事件onclientclick,這裏可以寫確認處理javascript腳本.例如:
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="btnRefuse" runat="server" OnClick="btnRefuse_Click" Text="拒絕"  OnClientClick="return confirm(' 你真的要拒絕這個用戶加入俱樂部?')"/>
                </ItemTemplate>
            </asp:TemplateField>

 

<asp:TreeView ID="TreeView1" EnableClientScript="true" PopulateNodesFromClient="true" OnTreeNodePopulate="TreeView1_TreeNodePopulated" runat="server" >
</asp:TreeView>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章