日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据绑定控件之ListView

發布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据绑定控件之ListView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、綁定控件之ListView

??????

??????? 在往下進行前我們下來討論下Asp.net的特性,對于Asp.net微軟為我們封裝了眾多的控件,將控件拖拽到頁面上就可以使用控件進行編程,而且值得稱道的是有些封裝良好的控件可以可視化的設置,然后就可以直接開發使用,就正如今天要說的ListView控件。

?????? ListView控件是功能最強大的數據綁定控件,它能夠可視化的開發實現數據的基本操作增刪改,另外還支持排序和分頁,只不過其分頁的效果必須配合DataPager控件。這種分頁對于小數據量來說還是很高效的,但對于大數量來說它的效率就很低下了。

?????? 優點:支持增、刪、改、排序,繼承了分頁功能,還支持自定義模板。
???? ? 缺點:影響程序性能,大數據量分頁效率低下。


二、控件使用技巧

???????

??????? ListView是.net封裝良好的控件,該控件是從.framework 3.5開始集成的,它的操作能夠完全通過設計前臺代碼的方式來實現,能夠通過可視化的設計窗口完成設計,并且在不編寫后臺代碼的基礎上完成開發。

?????? 對于下面示例中使用到的數據源我們使用SqlDataSource控件來綁定,在該控件中添加了增刪改查語句,并在語句中指定了使用的參數。

[html] view plain copy
  • ?<!--在為sql語句添加參數時和sql語句的參數添加方法相同,另外如果想要獲取行的主鍵需要在控件中綁定DataKeyNames另外在控件中添加SelectedValue屬性即可-->??
  • <asp:SqlDataSource?ID="SqlDataSource1"?runat="server"?ConnectionString="<%$?ConnectionStrings:MyBlogConnectionString?%>"?DeleteCommand="DELETE?FROM?match?WHERE?(id=@id)"?InsertCommand="INSERT?INTO?match(name)?VALUES?(@name)"?SelectCommand="SELECT?match.*?FROM?match"?UpdateCommand="UPDATE?match?SET?name?=?@name?where?id=@id">??
  • ????????????<DeleteParameters>??
  • ????????????????<asp:ControlParameter?ControlID="ListView1"?Name="id"?PropertyName="SelectedValue"?/>??
  • ????????????</DeleteParameters>??
  • ????????????<InsertParameters>??
  • ????????????????<asp:Parameter?Name="name"?/>??
  • ????????????</InsertParameters>??
  • ????????????<UpdateParameters>??
  • ????????????????<asp:Parameter?Name="name"?/>??
  • ????????????????<asp:ControlParameter?ControlID="ListView1"?Name="id"?PropertyName="SelectedValue"?/>??
  • ????????????</UpdateParameters>??
  • </asp:SqlDataSource>??

  • ??????? Note:想要在ListView中實現增刪改的功能,方法有兩種,其一可通過在SqlDataSource中編寫增刪改語句;其二是前篇博客中提供的傳統方法,在后臺代碼中編寫控制。下面的代碼示例采用的是第一種方法來實現的,這種方法能夠不編寫后臺代碼直接實現了增刪改,.NET封裝了具體的實現過程。

    ?????? 表格的基本樣式,使用CSS樣式來控制顯示表格的樣式。
    [css] view plain copy
  • <style>??
  • ????????table?{??
  • ????????????border:solid?1px?#cccccc;??
  • ????????????width:250px;??
  • ????????}??
  • ????????????table?th?{??
  • ????????????????color:?#00FFFF;??
  • ????????????????background:?#284775;??
  • ????????????????font-weight:?normal;??
  • ????????????????padding:?2px;??
  • ????????????}??
  • ????????????table?tr?{??
  • ????????????????border:solid?1px?black;??
  • ????????????}??
  • ????????????td?{??
  • ????????????????border:groove?1px?#ffd800;??
  • ????????????}??
  • ??????????
  • </style>??

  • ? 1、編輯

    ??????? 在編輯時和DataList控件相同是在EditItemplate模板中定義需要的控件,當單擊編輯按鈕后將會跳轉進入編輯界面。需要說明的是LayoutTemplate模板,在下面的示例中都使用了該模板,它里面的內容應該存放用戶自定義的內容,即控件封裝的功能以外的其它顯示內容。

    [html] view plain copy
  • <asp:ListView?ID="ListView1"?runat="server"?DataMember="DefaultView"?DataSourceID="SqlDataSource1">??
  • ????????????<AlternatingItemTemplate>??
  • ????????????????<tr?style="background-color:#cccccc;">??
  • ????????????????????<td>??
  • ????????????????????????<asp:Button?ID="EditButton"?runat="server"?CommandName="Edit"?Text="編輯"?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:Label?ID="idLabel"?runat="server"?Text='<%#?Eval("id")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:Label?ID="nameLabel"?runat="server"?Text='<%#?Eval("name")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????</tr>??
  • ????????????</AlternatingItemTemplate>??
  • ????????????<EditItemTemplate>??
  • ????????????????<tr?style="">??
  • ????????????????????<td>??
  • ????????????????????????<asp:Button?ID="UpdateButton"?runat="server"?CommandName="Update"?Text="更新"?/>??
  • ????????????????????????<asp:Button?ID="CancelButton"?runat="server"?CommandName="Cancel"?Text="取消"?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:Label?ID="idLabel1"?runat="server"?Text='<%#?Eval("id")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:TextBox?ID="nameTextBox"?runat="server"?Text='<%#?Bind("name")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????</tr>??
  • ????????????</EditItemTemplate>??
  • ??????????
  • ????????????<ItemTemplate>??
  • ????????????????<tr?style="">??
  • ????????????????????<td>??
  • ????????????????????????<asp:Button?ID="EditButton"?runat="server"?CommandName="Edit"?Text="編輯"?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:Label?ID="idLabel"?runat="server"?Text='<%#?Eval("id")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????????<td>??
  • ????????????????????????<asp:Label?ID="nameLabel"?runat="server"?Text='<%#?Eval("name")?%>'?/>??
  • ????????????????????</td>??
  • ????????????????</tr>??
  • ????????????</ItemTemplate>??
  • ????????????<LayoutTemplate>??
  • ????????????????<table?runat="server"?cellpadding="0"?cellspacing="0">??
  • ????????????????????<tr?runat="server">??
  • ????????????????????????<td?runat="server">??
  • ????????????????????????????<table?id="itemPlaceholderContainer"?runat="server"?border="0"?style="">??
  • ????????????????????????????????<tr?runat="server"?style="">??
  • ????????????????????????????????????<th?runat="server"></th>??
  • ????????????????????????????????????<th?runat="server">id</th>??
  • ????????????????????????????????????<th?runat="server">name</th>??
  • ????????????????????????????????</tr>??
  • ????????????????????????????????<tr?id="itemPlaceholder"?runat="server">??
  • ????????????????????????????????</tr>??
  • ????????????????????????????</table>??
  • ????????????????????????</td>??
  • ????????????????????</tr>??
  • ????????????????????<tr?runat="server">??
  • ????????????????????????<td?runat="server"?style="">??
  • ????????????????????????</td>??
  • ????????????????????</tr>??
  • ????????????????</table>??
  • ??
  • ????????????</LayoutTemplate>??
  • </asp:ListView>??

  • ????????? 通過上面的前臺代碼在不編寫后臺代碼的情況下能夠輕松實現編輯的功能,開發簡單。代碼的效果圖如下:

    ?? 2、刪除和插入

    ??????? 刪除的實現時是在Itemplate模板中添加的刪除命令來實現的,需要我們體現設計ListView控件的DatakeyNames屬性指定控件的主鍵值,這樣在SqlDataSource中使用的屬性@id才能生效。

    [html] view plain copy
  • <asp:ListView?ID="ListView1"?runat="server"?DataMember="DefaultView"?DataSourceID="SqlDataSource1"?DataKeyNames="id"?InsertItemPosition="LastItem">??
  • ????<AlternatingItemTemplate>??
  • ????????<tr?style="">??
  • ????????????<td>??
  • ????????????????<asp:Button?ID="DeleteButton"?runat="server"?CommandName="Delete"?Text="刪除"?/>??
  • ????????????</td>??
  • ????????????<td>??
  • ????????????????<asp:Label?ID="idLabel"?runat="server"?Text='<%#?Eval("id")?%>'?/>??
  • ????????????</td>??
  • ????????????<td>??
  • ????????????????<asp:Label?ID="nameLabel"?runat="server"?Text='<%#?Eval("name")?%>'?/>??
  • ????????????</td>??
  • ????????</tr>??
  • ????</AlternatingItemTemplate>??
  • ????<InsertItemTemplate>??
  • ????????<tr?style="">??
  • ????????????<td>??
  • ????????????????<asp:Button?ID="InsertButton"?runat="server"?CommandName="Insert"?Text="插入"?/>??
  • ????????????????<asp:Button?ID="CancelButton"?runat="server"?CommandName="Cancel"?Text="清除"?/>??
  • ????????????</td>??
  • ????????????<td>?</td>??
  • ????????????<td>??
  • ????????????????<asp:TextBox?ID="nameTextBox"?runat="server"?Text='<%#?Bind("name")?%>'?/>??
  • ????????????</td>??
  • ????????</tr>??
  • ????</InsertItemTemplate>??
  • ????<ItemTemplate>??
  • ????????<tr?style="">??
  • ????????????<td>??
  • ????????????????<asp:Button?ID="DeleteButton"?runat="server"?CommandName="Delete"?Text="刪除"?/>??
  • ????????????</td>??
  • ????????????<td>??
  • ????????????????<asp:Label?ID="idLabel"?runat="server"?Text='<%#?Eval("id")?%>'?/>??
  • ????????????</td>??
  • ????????????<td>??
  • ????????????????<asp:Label?ID="nameLabel"?runat="server"?Text='<%#?Eval("name")?%>'?/>??
  • ????????????</td>??
  • ????????</tr>??
  • ????</ItemTemplate>??
  • ????<LayoutTemplate>??
  • ????????<table?runat="server">??
  • ????????????<tr?runat="server">??
  • ????????????????<td?runat="server">??
  • ????????????????????<table?id="itemPlaceholderContainer"?runat="server"?border="0"?style="">??
  • ????????????????????????<tr?runat="server"?style="">??
  • ????????????????????????????<th?runat="server"></th>??
  • ????????????????????????????<th?runat="server">id</th>??
  • ????????????????????????????<th?runat="server">name</th>??
  • ????????????????????????</tr>??
  • ????????????????????????<tr?runat="server"?id="itemPlaceholder">??
  • ????????????????????????</tr>??
  • ????????????????????</table>??
  • ????????????????</td>??
  • ????????????</tr>??
  • ????????????<tr?runat="server">??
  • ????????????????<td?runat="server"?style="">??
  • ????????????????</td>??
  • ????????????</tr>??
  • ????????</table>??
  • ????</LayoutTemplate>??
  • </asp:ListView>??

  • ?????? 示例圖:

    ? 3、分頁和排序

    ??????? 分頁是在LayoutTemplate模板中添加的DataPager控件來實現的,所以可以通過修改DataPager的屬性值來指定顯示的導航的樣式。
    ??????? DataPager的Fields字項里來添加分頁的標簽,其中NextPreviousPagerField 控制按鈕的導航,通過設置它的屬性來顯示第一頁、上一頁等的導航按鈕,另外可通過設置NumericPagerField 來指定頁數導航。

    [html] view plain copy
  • <LayoutTemplate>??
  • ????<table?runat="server">??
  • ????????<tr?runat="server">??
  • ????????????<td?runat="server">??
  • ????????????????<table?id="itemPlaceholderContainer"?runat="server"?border="0"?style="">??
  • ????????????????????<tr?runat="server"?style="">??
  • ????????????????????????<th?runat="server">id</th>??
  • ????????????????????????<th?runat="server">name</th>??
  • ????????????????????</tr>??
  • ????????????????????<tr?runat="server"?id="itemPlaceholder">??
  • ????????????????????</tr>??
  • ????????????????</table>??
  • ????????????</td>??
  • ????????</tr>??
  • ????????<tr?runat="server">??
  • ????????????<td?runat="server"?style="background-color:#284775;">??
  • ????????????????<asp:DataPager?ID="DataPager1"?runat="server">??
  • ????????????????????<Fields>??
  • ????????????????????????<asp:NextPreviousPagerField?ButtonType="Button"???
  • ????????????????????????????ShowFirstPageButton="True"???
  • ????????????????????????????ShowLastPageButton="True"?/>??
  • ????????????????????????<asp:NumericPagerField?ButtonType="Button"?ButtonCount="3"?/>??
  • ????????????????????</Fields>??
  • ????????????????</asp:DataPager>??
  • ????????????</td>??
  • ????????</tr>??
  • ????</table>??
  • ?????<!--排序事件,必須放在LayoutTemplate模板中,并且CommandName值為Sort,CommandArgument值為需要排序的數據庫字段名稱-->??
  • ?????<asp:Button?Text="按id排序"?runat="server"?CommandName="Sort"?CommandArgument="id"?/>??
  • </LayoutTemplate>??

  • ??????? 另外排序的實現是通過在LayoutTemplate模板中添加asp.net控件來實現的,設置控件CommandName="Sort",并將CommandArgument賦值為需要排序的數據庫字段名稱,如下想要對id排序,則CommandArgument="id"。


    4、分組

    ???????? 分組也是ListView控件的一大特色,把數據當做一個個的子集顯示到控件上,就好像是分塊顯示一樣,把一部分數據分到一個塊中,另一部分分到另一個塊中,可通過設置該控件的GroupItemCount來控制數據所分的組數。


    ???? 另外在分組時需要在GroupTemplate模板中添加一個ID名稱為itemPlaceholderPlaceHolder控件,然后在LayoutTemplate模板中添加一個ID名稱為groupPlaceholderPlaceHolder控件,這樣就能夠簡單的達到對數據分組的目的。

    [html] view plain copy
  • <asp:ListView?ID="ListView1"??GroupItemCount="5"?runat="server"?DataSourceID="SqlDataSource1">??
  • ????<GroupTemplate>??
  • ????????<tr>??
  • ????????????<asp:PlaceHolder?runat="server"?ID="itemPlaceholder"?/>??????????????????????
  • ????????</tr>??
  • ????</GroupTemplate>??
  • ????<GroupSeparatorTemplate>??
  • ????????<tr?id="Tr1"?runat="server">??
  • ????????????<td?colspan="5"><hr?/></td>??
  • ????????</tr>??
  • ????</GroupSeparatorTemplate>??
  • ????<LayoutTemplate>??
  • ????????<table>??
  • ????????????<asp:PlaceHolder?ID="groupPlaceholder"?runat="server"?/>??
  • ????????</table>??
  • ????</LayoutTemplate>??
  • ????<ItemTemplate>??
  • ????????<td?style="background-color:#ffd800;">??
  • ????????????id:<asp:Label?ID="id"?runat="server"?Text='<%#Eval("id")?%>'></asp:Label><br?/>??
  • ????????????name:<asp:Label?ID="Label1"?runat="server"?Text='<%#Eval("name")?%>'></asp:Label><br?/>??
  • ????????</td>??
  • ?????????????????
  • ????</ItemTemplate>??
  • </asp:ListView>??

  • ???? 分組后的示例圖:


    三、對比升華


    ??????? 有關數據綁定的控件已經討論完成,讓我們最后回過頭來繼續討論下幾種經常使用的數據綁定控件。


    ???????? 對于數據綁定控件來說Repeater控件是最基礎的了,它因為最原始所以受到廣大開發人員的喜愛,對有經驗程序員來說在開發時往往采用Repeater,因為它使用靈活,穩定,不會產生惡意代碼,并且效率高。
    ???????? 對比幾種控件這就不得不說說另外.net平臺的厲害之處,針對不同開發程度的人員封裝了不同的開發控件,對于菜鳥級別的開發人員來說GridView和ListView應該是他們的首選,因為操作簡單,只需要點幾個按鈕選幾個選項就能實現強大的功能。另外對于老程序員來說習慣了編寫代碼,不敲代碼手癢這時候首選當然是Repeater。不多對于學習人員來說還是推薦使用Repeater控件,因為它的功能少,而且靈活,得到學習的機會更多。

    ???????代碼示例下載地址:ListViewDemo。


    結語


    ?????? 控件的基本使用已經討論完成,對于每一個控件的討論都經歷了兩個步驟,分別是基礎和應用,其中應用部分是重點,通過應用把控件熟練掌握。這正是學習--思考--實踐--總結很好的映射,另外提倡多去查閱MSDN,里面有詳細的使用方法。

    總結

    以上是生活随笔為你收集整理的数据绑定控件之ListView的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。