ASP.NET中後臺資料和前臺控制元件的繫結
關於ASP.NET中後臺資料庫和前臺的資料控制元件的繫結問題
最近一直在學習個知識點,自己建立了SQL Server資料庫表,想在ASP.NET中連線資料庫,並把資料庫中的資料顯示在前臺,注意,這裡的資料顯示不是使用asp.net自帶的資料顯示控制元件進行資料的繫結,而是使用開源的資料表格外掛DataTables。這樣的顯示效果要比DataGridView好看的多。下面將詳細的過程記錄如下,供初學者參考。
一、要將SQL Server資料庫中的資料通過普通的table表格顯示在頁面上,首先是使用一個繫結資料的控制元件:Repeater 控制元件,在使用繫結表示式:<%#欄位名稱>。在後臺使用DataBind方法。
具體事例程式碼:
前臺:
<table id="tb_example" class="display cell-border hover dt-body-center row-border order-column "> <thead> <tr> <th>公司名稱</th> <th>公司地點</th> <th>註冊資金</th> <th>公司編號</th> <th>公司代表</th> </tr> </thead> <asp:Repeater ID="ratTable" runat="server"> <ItemTemplate> <tr> <td><%#Eval("PRONAME") %> </td> <td><%#Eval("PROESS") %></td> <td><%#Eval("PROMENOY") %></td> <td><%#Eval("PROID") %></td> <td><%#Eval("PROPERSON") %></td> </tr> </ItemTemplate> </asp:Repeater> </table>
後臺:
string SqlStr = "Server=(local);User Id=sa;Pwd=123;DataBase=ZBD";//連線本地的SQL Server資料 SqlConnection conn = new SqlConnection(SqlStr); //例項化SQLConnection物件進行連線資料 string sqlstr = "select PRONAME,PROID,PROESS,PROMENOY,PROPERSON from tb_zbd ";//定義SQL查詢語句用於查詢表資料 SqlCommand myCmd = new SqlCommand(sqlstr, conn); DataSet ds = new DataSet();//定義dataset物件 conn.Open();//開啟資料庫 SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn); conn.Close(); da.Fill(ds); ratTable.DataSource = ds.Tables[0]; ratTable.DataBind();
程式碼說明:上述程式碼定義了DataAdapter物件。DataAdapter物件是DataSet物件和資料來源之間聯絡的橋樑,主要是從資料來源中檢索資料、填充DataSet物件中的表或者把使用者對DataSet物件做出的更改寫入到資料來源。
執行操作的顯示結果如下圖:
二、資料繫結的相關知識點總結
資料繫結是指從資料來源獲取資料向資料來源寫入資料。簡單的資料繫結可以使對變數或屬性的繫結,比較複雜的是對ASP.NET資料繫結控制元件的操作。
說明:所有的資料繫結表示式都必須包含在<%#...%>中。執行繫結操作要麼執行Page物件的DataBind方法,要麼執行資料繫結控制元件對應的例項物件的DataBind方法。
1、簡單的屬性繫結
基於屬性的繫結所涉及的屬性必須包含get訪問器,因為在資料繫結過程中,資料顯示控制元件需要通過屬性的get訪問器從屬性中讀取資料。
語法:<%# 屬性名稱%>
在後臺執行Page.DataBind()方法。
技巧:簡單變數的資料繫結類似於簡單的屬性繫結。例如定義一個公共的變數並賦值,在前臺的label控制元件額Text屬性中使用資料語法<%#,,,%>也可以進行繫結。
2、表示式繫結
將資料繫結顯示控制元件之前,對資料的處理,通過表示式將執行的結果顯示在控制元件之上。
3、集合繫結
像一些比較特殊的資料控制元件需要以資料集合作為資料來源進行資料的繫結。
4、技巧總結:對於資料控制元件的繫結,是在資料繫結表示式中使用Eval和Bind方法進行資料繫結。其中二者的區別;
<%#Eval("資料欄位名稱")%>這種方法是單向繫結,只具有讀取功能。
<%#Bind("資料欄位名稱")%>這種方法是雙向的,同時具有讀取和寫入的功能。