為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做支援資料庫的步驟:
- 在Visuaol Studio 2005的命令列環境中執行命令:aspnet_regsql。該工具可以為ASP.NET 2.0在指定的SQL Server上建立或指定一個支援資料庫,預設名字為aspnetdb
- 接下來需要修改設定檔,可以在通過修改$:WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config來實現,但修改machine.config檔案並不是一個好的方法,好在ASP.NET 2.0提供了在Web.Config檔案中修改的辦法。
- 開啟一個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伺服器資料庫。
- 然後在<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>
- 這樣設定檔就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
1 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事件代碼中為該節點添加子節點。
<asp:TreeView ID="TreeView1" EnableClientScript="true" PopulateNodesFromClient="true" OnTreeNodePopulate="TreeView1_TreeNodePopulated" runat="server" >
</asp:TreeView>
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>
文章來自:http://www.cnblogs.com/ghd258/archive/2005/11/18/279583.html