1: “折叠”图像“展开”图像“复制”图像“复制悬停”图像 全部折叠全部展开 代码:全部 代码:多个 代码:Visual Basic 代码:C# 代码:Visual C++ 代码:J# 代码:JScript
2: Visual Basic
3: C#
4: Visual C++
5: J#
6: JScript
7:
8: ListView Web 服务器控件概述
9: 请参见 发送反馈意见
10:
11:
12: 利用 ASP.NET ListView 控件,可以绑定从数据源返回的数据项并显示它们。这些数据可以显示在多个页面。您可以逐个显示数据项,也可以对它们分组。
13:
14: ListView 控件会按照您使用模板和样式定义的格式显示数据。与 DataList 和 Repeater 控件相似,此控件也适用于任何具有重复结构的数据。但与这些控件不同的是,ListView 控件允许用户编辑、插入和删除数据,以及对数据进行排序和分页,所有这一切都无需编写代码。
15:
16: 本主题包括:
17:
18: 将数据绑定到 ListView 控件
19:
20: 为 ListView 控件创建模板
21:
22: 对数据进行分页
23:
24: 对数据进行排序
25:
26: 修改数据
27:
28: 对 ListView 项应用样式
29:
30: 类参考
31:
32: 代码示例
33:
34: 其他资源
35:
36: “折叠”图像将数据绑定到 ListView 控件
37: 通过下列方法,可以将 ListView 控件绑定到数据:
38:
39: 使用 DataSourceID 属性。通过此属性可以将 ListView 控件绑定到数据源控件,例如 SqlDataSource 控件。我们建议采用这种方法,因为它可以使 ListView 控件利用数据源控件的功能。此外,它还可以提供用于排序、分页、插入、删除和更新操作的内置功能。采用这种方法时,还可以使用双向绑定表达式。有关数据源控件的更多信息,请参见数据源控件概述。
40:
41: 使用 DataSource 属性。此属性允许绑定到各种对象,包括 ADO.NET 数据集、数据读取器以及内存中的结构(例如集合)。采用此方法时,您需要为所有附加功能(例如排序、分页和更新)编写代码。
42:
43: 返回页首
44:
45: “折叠”图像为 ListView 控件创建模板
46: 与 DataList 和 Repeater 控件类似,ListView 控件显示的项也是用模板定义的。利用 ListView 控件,可以逐项显示数据,也可以按组显示数据。
47:
48: 通过创建 LayoutTemplate 模板,可以定义 ListView 控件的主要(根)布局。LayoutTemplate 必须包含一个充当数据占位符的控件。例如,该布局模板可以包含 ASP.NET Table、Panel 或 Label 控件 (它还可以包含 runat 属性设置为“server”的 table、div 或 span 元素)。这些控件将包含 ItemTemplate 模板所定义的每个项的输出,您可以在 GroupTemplate 模板定义的内容中对这些输出进行分组。
49:
50: 在 ItemTemplate 模板中,需要定义各个项的内容。此模板包含的控件通常已绑定到数据列或其他单个数据元素。
51:
52: 对项分组
53: 使用 GroupTemplate 模板,可以选择对 ListView 控件中的项进行分组。对项分组通常是为了创建平铺的表布局。在平铺的表布局中,各个项将在行中重复 GroupItemCount 属性指定的次数。为创建平铺的表布局,布局模板可以包含 ASP.NET Table 控件以及将 runat 属性设置为“server”的 HTML table 元素。随后,组模板可以包含 ASP.NET TableRow 控件(或 HTML tr 元素)。而项模板可以包含 ASP.NET TableCell 控件(或 HTML td 元素)中的各个控件。
54:
55: 使用 EditItemTemplate 模板,可以提供已绑定数据的用户界面,从而使用户可以修改现有的数据项。使用 InsertItemTemplate 模板还可以定义已绑定数据的用户界面,以使用户能够添加新的数据项。有关更多信息,请参见本主题后面的修改数据。
56:
57: 可用的模板
58: 下表列出了可用于 ListView 控件的所有模板。
59:
60: LayoutTemplate
61: 标识定义控件的主要布局的根模板。它包含一个占位符对象,例如表行 (tr)、div 或 span 元素。此元素将由 ItemTemplate 模板或 GroupTemplate 模板中定义的内容替换。它还可能包含一个 DataPager 对象。
62:
63: ItemTemplate
64: 标识要为各个项显示的数据绑定内容。
65:
66: ItemSeparatorTemplate
67: 标识要在各个项之间呈现的内容。
68:
69: GroupTemplate
70: 标识组布局的内容。它包含一个占位符对象,例如表单元格 (td)、div 或 span。该对象将由其他模板(例如 ItemTemplate 和 EmptyItemTemplate 模板)中定义的内容替换。
71:
72: GroupSeparatorTemplate
73: 标识要在项组之间呈现的内容。
74:
75: EmptyItemTemplate
76: 标识在使用 GroupTemplate 模板时为空项呈现的内容。例如,如果将 GroupItemCount 属性设置为 5,而从数据源返回的总项数为 8,则 ListView 控件显示的最后一行数据将包含 ItemTemplate 模板指定的 3 个项以及 EmptyItemTemplate 模板指定的 2 个项。
77:
78: EmptyDataTemplate
79: 标识在数据源未返回数据时要呈现的内容。
80:
81: SelectedItemTemplate
82: 标识为区分所选数据项与显示的其他项,而为该所选项呈现的内容。
83:
84: AlternatingItemTemplate
85: 标识为便于区分连续项,而为交替项呈现的内容。
86:
87: EditItemTemplate
88: 标识要在编辑项时呈现的内容。对于正在编辑的数据项,将呈现 EditItemTemplate 模板以替代 ItemTemplate 模板。
89:
90: InsertItemTemplate
91: 标识要在插入项时呈现的内容。将在 ListView 控件显示的项的开始或末尾处呈现 InsertItemTemplate 模板,以替代 ItemTemplate 模板。通过使用 ListView 控件的 InsertItemPosition 属性,可以指定 InsertItemTemplate 模板的呈现位置。
92:
93: 更改项模板
94: 下面的示例演示了项模板的基本结构。
95:
96: “复制”图像复制代码
97: <asp:ListView runat="server" ID="ListView1"
98: DataSourceID="SqlDataSource1">
99: <LayoutTemplate>
100: <table runat="server" id="table1" runat="server" >
101: <tr runat="server" id="itemPlaceholder" ></tr>
102: </table>
103: </LayoutTemplate>
104: <ItemTemplate>
105: <tr runat="server>
106: <td runat="server">
107: <%-- Data-bound content. --%>
108: <asp:Label ID="NameLabel" runat="server"
109: Text='<%#Eval("Name") %>' />
110: </td>
111: </tr>
112: </ItemTemplate>
113: </asp:ListView>
114:
115:
116: 若要逐个显示项,请向 LayoutTemplate 模板中添加一个服务器端控件,并将该控件的 ID 属性设置为 itemPlaceholder。该控件只是其他模板(通常为 ItemTemplate 模板)的占位符。这样,该控件在运行时将被其他模板中的内容替换。
117:
118: 注意注意:
119: 通过将 ItemPlaceholderID 属性设置为一个新值,可以更改用于标识项容器的 ID 属性的值。
120:
121:
122: 定义布局模板后,可以添加 ItemTemplate 模板,它通常包含用于显示数据绑定内容的控件。通过使用 Eval 方法将这些控件绑定到数据源中的值,可以指定要用于显示每个项的标记。有关 Eval 元素的更多信息,请参见 数据绑定表达式语法。
123:
124: ItemSeparatorTemplate 模板用于标识要在各个项之间包括的内容,若要提供其他内容进行呈现,则可以使用此模板。
125:
126: 下图显示的布局使用多个表行来显示数据源中的每项数据。
127:
128: 每项使用多行的 ListView
129: 下面的示例演示如何创建此布局。
130:
131: “复制”图像复制代码
132: <asp:ListView runat="server" ID="EmployeesListView"
133: DataSourceID="EmployeesDataSource"
134: DataKeyNames="EmployeeID">
135: <LayoutTemplate>
136: <table cellpadding="2" runat="server" id="tblEmployees"
137: style="width:460px">
138: <tr runat="server" id="itemPlaceholder">
139: </tr>
140: </table>
141: <asp:DataPager runat="server" ID="DataPager" PageSize="3">
142: <Fields>
143: <asp:NumericPagerField
144: ButtonCount="5"
145: PreviousPageText="<--"
146: NextPageText="-->" />
147: </Fields>
148: </asp:DataPager>
149: </LayoutTemplate>
150: <ItemTemplate>
151: <tr runat="server">
152: <td valign="top" colspan="2" align="center"
153: class="EmployeeName">
154: <asp:Label ID="FirstNameLabel" runat="server"
155: Text='<%#Eval("FirstName") %>' />
156: <asp:Label ID="LastNameLabel" runat="server"
157: Text='<%#Eval("LastName") %>' />
158: </td>
159: </tr>
160: <tr style="height:72px" runat="server">
161: <td valign="top" class="EmployeeInfo">
162: <asp:Label ID="JobTitleLabel" runat="server"
163: Text='<%#Eval("JobTitle") %>' />
164: <br />
165: <asp:HyperLink ID="EmailAddressLink" runat="server"
166: Text='<%#Eval("EmailAddress") %>'
167: NavigateUrl='<%#"mailto:" + Eval("EmailAddress") %>' />
168: <br />
169: <asp:Label ID="PhoneLabel" runat="server"
170: Text='<%#Eval("Phone") %>' />
171: </td>
172: <td valign="top" class="EmployeeAddress">
173: <asp:Label ID="AddressLine1Label" runat="server"
174: Text='<%#Eval("AddressLine1") %>' />
175: <br />
176: <asp:Panel ID="AddressLine2Panel" runat="server"
177: Visible='<%#Eval("AddressLine2").ToString() != String.Empty %>'>
178: <asp:Label ID="AddressLine2Label" runat="server"
179: Text='<%#Eval("AddressLine2").ToString()%>' />
180: <br />
181: </asp:Panel>
182: <asp:Label ID="CityLabel" runat="server"
183: Text='<%#Eval("City") %>' />,
184: <asp:Label ID="StateProvinceNameLabel" runat="server"
185: Text='<%#Eval("StateProvinceName") %>' />
186: <asp:Label ID="PostalCodeLabel" runat="server"
187: Text='<%#Eval("PostalCode") %>' />
188: <br />
189: <asp:Label ID="CountryRegionNameLabel" runat="server"
190: Text='<%#Eval("CountryRegionName") %>' />
191: </td>
192: </tr>
193: </ItemTemplate>
194: </asp:ListView>
195:
196:
197: 创建组模板
198: 下面的示例演示如何创建组模板。
199:
200: “复制”图像复制代码
201: <asp:ListView runat="server" ID="ListView1"
202: DataSourceID="SqlDataSource1"
203: GroupItemCount="5">
204: <LayoutTemplate>
205: <table runat="server" id="table1">
206: <tr runat="server" id="groupPlaceholder">
207: </tr>
208: </table>
209: </LayoutTemplate>
210: <GroupTemplate>
211: <tr runat="server" id="tableRow">
212: <td runat="server" id="itemPlaceholder" />
213: </tr>
214: </GroupTemplate>
215: <ItemTemplate>
216: <td runat="server">
217: <%-- Data-bound content. --%>
218: <asp:Label ID="NameLabel" runat="server"
219: Text='<%#Eval("Name") %>' />
220: </td>
221: </ItemTemplate>
222: </asp:ListView>
223:
224:
225: 若要按组显示各项,可以在 LayoutTemplate 模板中使用一个服务器控件来充当组的占位符。例如,可以使用 TableRow 控件。请将该占位符控件的 ID 属性设置为 groupPlaceholder。在运行时,该占位符控件将被 GroupTemplate 模板中的内容替换。
226:
227: 随后,请再添加一个占位符控件,并将其 ID 属性设置为 itemPlaceholder。该控件只是其他模板(通常为 ItemTemplate 模板)的占位符。这样,该控件在运行时将被其他模板中的内容替换。该内容将重复 ListView 控件的 GroupItemCount 属性所指定的项次数。
228:
229: 最后,请添加一个 ItemTemplate 模板,并提供要在每个项的包含控件内显示的数据绑定内容。
230:
231: 注意注意:
232: 通过为 GroupPlaceholderID 属性设置一个新值,可以更改用于标识组占位符的 ID 属性的值。
233:
234:
235: 使用 ItemSeparatorTemplate 模板可以指定各个项之间的分隔符。使用 GroupSeparatorTemplate 属性可以指定各个组之间的分隔符。
236:
237: 下图显示的布局在每行中显示了数据源中的多个项。
238:
239: ListView 控件中每行有多个项
240: 下面的示例演示如何创建此布局。
241:
242: “复制”图像复制代码
243: <asp:ListView runat="server" ID="ProductsListView"
244: GroupItemCount="3"
245: DataSourceID="ProductsSqlDataSource" DataKeyNames="ProductID">
246: <LayoutTemplate>
247: <table cellpadding="2" runat="server"
248: id="tblProducts" style="height:320px">
249: <tr runat="server" id="groupPlaceholder">
250: </tr>
251: </table>
252: <asp:DataPager runat="server" ID="DataPager"
253: PageSize="9">
254: <Fields>
255: <asp:NumericPagerField ButtonCount="3"
256: PreviousPageText="<--"
257: NextPageText="-->" />
258: </Fields>
259: </asp:DataPager>
260: </LayoutTemplate>
261: <GroupTemplate>
262: <tr runat="server" id="productRow"
263: style="height:80px">
264: <td runat="server" id="itemPlaceholder">
265: </td>
266: </tr>
267: </GroupTemplate>
268: <ItemTemplate>
269: <td valign="top" align="center" style="width:100" runat="server">
270: <asp:Image ID="ProductImage" runat="server"
271: ImageUrl='<%#"~/images/thumbnails/" +
272: Eval("ThumbnailPhotoFileName") %>'
273: Height="49" /><br />
274: <asp:HyperLink ID="ProductLink" runat="server"
275: Target="_blank" Text='<% #Eval("Name")%>'
276: NavigateUrl='<%#"ShowProduct.aspx?ProductID=" +
277: Eval("ProductID") %>' />
278: </td>
279: </ItemTemplate>
280: </asp:ListView>
281:
282:
283: 返回页首
284:
285: “折叠”图像对数据进行分页
286: 若要使用户能够按页查看 ListView 控件中的数据,可以使用 DataPager 控件。DataPager 控件可以位于 LayoutTemplate 模板内部,也可以位于 ListView 控件之外的页面上。如果 DataPager 控件不在 ListView 控件内,则必须将 PagedControlID 属性设置为 ListView 控件的 ID。
287:
288: DataPager 控件支持内置的分页用户界面。您可以使用 NumericPagerField 对象,此对象允许用户按页码选择数据页。此外也可以使用 NextPreviousPagerField 对象。利用此对象,用户可以逐页浏览数据页,也可以直接跳到第一个或最后一个数据页。数据页的大小由 DataPager 控件的 PageSize 属性设置。单个 DataPager 控件中可以使用一个或多个页导航字段对象。
289:
290: 另外,通过使用 TemplatePagerField 对象,还可以创建自定义分页用户界面。在 TemplatePagerField 模板中,可以使用 Container 属性来引用 DataPager 控件。此属性可提供对 DataPager 控件的各个属性的访问。这些属性包括起始行索引、页面大小,以及当前绑定到 ListView 控件的总行数。
291:
292: 下面的示例演示了一个在 ListView 控件的 LayoutTemplate 模板中包括的 DataPager 类。
293:
294: “复制”图像复制代码
295: <asp:ListView runat="server" ID="ListView1"
296: DataSourceID="SqlDataSource1">
297: <LayoutTemplate>
298: <table runat="server" id=" table1">
299: <tr runat="server" id="itemPlaceholder">
300: </tr>
301: </table>
302: <asp:DataPager runat="server" ID="DataPager" PageSize="5">
303: <Fields>
304: <asp:NumericPagerField ButtonCount="10"
305: PreviousPageText="<--"
306: NextPageText="-->" />
307: </Fields>
308: </asp:DataPager>
309: </LayoutTemplate>
310: <ItemTemplate>
311: <tr runat="server">
312: <%-- Data-bound content. --%>
313: </tr>
314: </ItemTemplate>
315: </asp:ListView>
316:
317:
318: 下图显示的布局使用 NumericPagerField 对象基于页码显示数据页的链接。
319:
320: 使用 NumericPagerField 对象
321: 下面的示例演示如何创建此布局。
322:
323: “复制”图像复制代码
324: <asp:DataPager runat="server" ID="DataPager" PageSize="10">
325: <Fields>
326: <asp:NumericPagerField ButtonCount="10"
327: CurrentPageLabelCssClass="CurrentPage"
328: NumericButtonCssClass="PageNumbers"
329: NextPreviousButtonCssClass="PageNumbers" NextPageText=" > "
330: PreviousPageText=" < " />
331: </Fields>
332: </asp:DataPager>
333:
334:
335: 下图显示的分页用户界面使用 NextPreviousPagerField 对象显示下一个、上一个、第一个以及最后一个数据页的链接。分页用户界面还包括 TemplatePagerField 模板中的自定义内容,此模板用于显示当前的项编号范围以及总项数。TemplatePagerField 模板包含一个文本框,用户可以在其中输入要移到的项的编号。指定的项将显示为页面的第一项。
336:
337: 使用 TemplatePagerField 对象
338: 下面的示例演示如何创建分页用户界面。
339:
340: “复制”图像复制代码
341: <asp:DataPager runat="server" ID="EmployeesDataPager" PageSize="8">
342: <Fields>
343: <asp:TemplatePagerField>
344: <PagerTemplate>
345:
346: <asp:TextBox ID="CurrentRowTextBox" runat="server"
347: AutoPostBack="true"
348: Text="<%# Container.StartRowIndex + 1%>"
349: Columns="1"
350: style="text-align:right"
351: OnTextChanged="CurrentRowTextBox_OnTextChanged" />
352: to
353: <asp:Label ID="PageSizeLabel" runat="server" Font-Bold="true"
354: Text="<%# Container.StartRowIndex + Container.PageSize > Container.TotalRowCount ? Container.TotalRowCount : Container.StartRowIndex + Container.PageSize %>" />
355: of
356: <asp:Label ID="TotalRowsLabel" runat="server" Font-Bold="true"
357: Text="<%# Container.TotalRowCount %>" />
358: </PagerTemplate>
359: </asp:TemplatePagerField>
360: <asp:NextPreviousPagerField
361: ShowFirstPageButton="true" ShowLastPageButton="true"
362: FirstPageText="|<< " LastPageText=" >>|"
363: NextPageText=" > " PreviousPageText=" < " />
364: </Fields>
365: </asp:DataPager>
366:
367:
368: 下面的示例演示了 TextBox 控件(包含在 TemplatePagerField 模板中)的 TextChanged 事件的事件处理程序。该处理程序中的代码会移至用户指定的数据项。
369:
370: Visual Basic “复制”图像复制代码
371: Protected Sub CurrentRowTextBox_OnTextChanged(ByVal sender As Object, _
372: ByVal e As EventArgs)
373: Dim t As TextBox = CType(sender, TextBox)
374: Dim pager As DataPager = _
375: CType(EmployeesListView.FindControl("EmployeesDataPager"), _
376: DataPager)
377: pager.SetPageProperties(Convert.ToInt32(t.Text) - 1, _
378: pager.PageSize, True)
379: End Sub
380:
381: C# “复制”图像复制代码
382: protected void CurrentRowTextBox_OnTextChanged(object sender,
383: EventArgs e)
384: {
385: TextBox t = (TextBox)sender;
386: DataPager pager =
387: (DataPager)EmployeesListView.FindControl("EmployeesDataPager");
388: pager.SetPageProperties(Convert.ToInt32(t.Text) - 1,
389: pager.PageSize, true);
390: }
391:
392:
393: 返回页首
394:
395: “折叠”图像对数据进行排序
396: 通过在 LayoutTemplate 模板中添加一个按钮,并将该按钮的 CommandName 属性设置为“Sort”,可以对 ListView 控件中显示的数据进行排序。该按钮的 CommandArgument 属性应设置为要用作排序依据的列名。重复单击“Sort”(排序)按钮可在排序方向 Ascending 和 Descending 之间切换。
397:
398: 在“Sort”(排序)按钮的 CommandArgument 属性中,可以指定多个列名。但是,ListView 控件会向整个列表的列应用该排序方向。因此,只有列表的最后一列会应用该排序方向。例如,如果 CommandArgument 包含“LastName, FirstName”,则重复单击“Sort”(排序)按钮会产生某种类似于“LastName, FirstName ASC”或“LastName, FirstName DESC”的表达式。
399:
400: 下面的示例演示了一个 ListView 控件,它包含的“Sort”(排序)按钮将按姓氏对数据排序。
401:
402: “复制”图像复制代码
403: <asp:ListView runat="server" ID="ListView1" DataSourceID="SqlDataSource1">
404: <LayoutTemplate>
405: <asp:LinkButton runat="server" ID="SortButton"
406: Text="Sort" CommandName="Sort" CommandArgument="LastName" />
407: <table runat="server" id="table1">
408: <tr runat="server" id="itemPlaceholder">
409: </tr>
410: </table>
411: <asp:DataPager runat="server" ID="DataPager" PageSize="20">
412: <Fields>
413: <asp:NumericPagerField ButtonCount="10"
414: PreviousPageText="<--"
415: NextPageText="-->" />
416: </Fields>
417: </asp:DataPager>
418: </LayoutTemplate>
419: <ItemTemplate>
420: <tr runat="server">
421: <td><asp:Label runat="server" ID="FirstNameLabel"
422: Text='<%# Eval("FirstName")' /></td>
423: <td><asp:Label runat="server" ID="LastNameLabel"
424: Text='<%# Eval("LastName")' /></td>
425: </tr>
426: </ItemTemplate>
427: </asp:ListView>
428:
429:
430: 动态设置排序表达式
431: 通过动态设置 ListView 控件的排序表达式,可以创建自定义排序。若要执行此操作,请调用 Sort 方法或处理 Sorting 事件。
432:
433: 下面的示例演示 Sorting 事件的处理程序。此代码将向 SortExpression 属性中的所有列应用同一排序方向。
434:
435: Visual Basic “复制”图像复制代码
436: Protected Sub ContactsListView_Sorting(ByVal sender As Object, _
437: ByVal e As ListViewSortEventArgs)
438:
439: If (String.IsNullOrEmpty(e.SortExpression)) Then Return
440:
441: Dim direction As String = ""
442: If Not (ViewState("SortDirection") Is Nothing) Then
443: direction = ViewState("SortDirection").ToString()
444: End If
445:
446: If direction = "ASC" Then
447: direction = "DESC"
448: Else
449: direction = "ASC"
450: End If
451:
452: ViewState("SortDirection") = direction
453:
454: Dim sortColumns As String() = e.SortExpression.Split(","c)
455: Dim sortExpression As String = sortColumns(0) & " " & direction
456: Dim i As Integer
457: For i = 1 To sortColumns.Length - 1
458: sortExpression += ", " & sortColumns(i) & " " & direction
459: Next i
460: e.SortExpression = sortExpression
461:
462: End Sub
463:
464: C# “复制”图像复制代码
465: protected void EmployeesListView_OnSorting(object sender,
466: ListViewSortEventArgs e)
467: {
468: if (String.IsNullOrEmpty(e.SortExpression)) { return; }
469: string direction = "";
470: if (ViewState["SortDirection"] != null)
471: direction = ViewState["SortDirection"].ToString();
472:
473: if (direction == "ASC")
474: direction = "DESC";
475: else
476: direction = "ASC";
477:
478: ViewState["SortDirection"] = direction;
479:
480: string[] sortColumns = e.SortExpression.Split(',');
481: string sortExpression = sortColumns[0] + " " + direction;
482: for (int i = 1; i < sortColumns.Length; i++)
483: sortExpression += ", " + sortColumns[i] + " " + direction;
484: e.SortExpression = sortExpression;
485: }
486:
487:
488: 返回页首
489:
490: “折叠”图像修改数据
491: 通过为 ListView 控件创建模板,可允许用户编辑、插入或删除单个数据项。
492:
493: 若要使用户能够编辑数据项,可以向 ListView 控件添加一个 EditItemTemplate 模板。在将一个项切换至编辑模式时,ListView 控件将使用编辑模板显示该项。该模板应包含一些数据绑定控件,以便用户可以在其中编辑各个值。例如,该模板可以包含用户可以在其中编辑现有值的文本框。
494:
495: 若要使用户能够插入新项,可以向 ListView 控件中添加一个 InsertItemTemplate 模板。与编辑模板一样,插入模板也应该包含允许输入数据的数据绑定控件。InsertItemTemplate 模板呈现在所显示项的开始或末尾。通过使用 ListView 控件的 InsertItemPosition 属性,可以指定 InsertItemTemplate 模板的呈现位置。
496:
497: 通常需要向模板中添加一些按钮,以允许用户指定要执行的操作。例如,可以向项模板中添加“Delete”(删除)按钮,以允许用户删除该项。
498:
499: 通过在模板中添加“Edit”(编辑)按钮,可允许用户切换到编辑模式。在 EditItemTemplate 中,可以添加允许用户保存更改的“Update”(更新)按钮。此外,还可以添加“Cancel”(取消)按钮,以允许用户在不保存更改的情况下切换回显示模式。
500:
501: 通过设置按钮的 CommandName 属性,可以定义按钮将执行的操作。下表列出了一些 CommandName 属性值,ListView 控件已内置了针对这些值的行为。
502:
503: Select
504: 显示所选项的 SelectedItemTemplate 模板的内容。
505:
506: Insert
507: 在 InsertItemTemplate 模板中,指定应将数据绑定控件的内容保存在数据源中。
508:
509: Edit
510: 指定 ListView 控件应切换到编辑模式,并使用 EditItemTemplate 模板显示项。
511:
512: Update
513: 在 EditItemTemplate 模板中,指定应将数据绑定控件的内容保存在数据源中。
514:
515: Delete
516: 从数据源中删除项。
517:
518: Cancel
519: 取消当前操作。显示 EditItemTemplate 模板时,如果该项是当前选定的项,则取消操作会显示 SelectedItemTemplate 模板;否则将显示 ItemTemplate 模板。显示 InsertItemTemplate 模板时,取消操作将显示空的 InsertItemTemplate 模板。
520:
521: (自定义值)
522: 默认情况下,不执行任何操作。您可以为 CommandName 属性提供自定义值。随后可以在 ItemCommand 事件中测试该值并执行相应的操作。
523:
524: 有关配置为允许执行编辑、删除和插入操作的 ListView 控件的示例,请参见演练:使用 ListView Web 服务器控件修改数据。
525:
526: 返回页首
527:
528: “折叠”图像对 ListView 项应用样式
529: ListView 控件不支持 BackColor 和 Font 等样式属性。若要向 ListView 控件应用样式,必须对 ListView 模板中的各个控件应用级联样式表 (CSS) 类或内联样式元素。
530:
531: 某些对象支持允许对输出元素设置样式的属性。例如,NumericPagerField 对象包括下列属性:
532:
533: NumericButtonCssClass 属性,可为用于按页码在数据页间移动的按钮指定 CSS 类名。
534:
535: CurrentPageLabelCssClass 属性,可为当前页码指定 CSS 类名。
536:
537: NextPreviousButtonCssClass 属性,可为用于移到数字按钮的下一个或上一个组的按钮指定 CSS 类名。
538:
539: 返回页首
540:
541: “折叠”图像类参考
542: 下表列出了与 ListView 控件相关的关键类。
543:
544: 类
545: 说明
546:
547: ListView
548: 一个服务器控件,它使用用户定义的模板显示数据源的值。此控件可配置为允许用户选择、删除、编辑和插入记录,以及对记录进行排序。
549:
550: ListViewItem
551: 一个对象,表示 ListView 控件中的项。
552:
553: ListViewDataItem
554: 一个对象,表示 ListView 控件中的数据项。
555:
556: ListViewItemType
557: 一个枚举,用于标识 ListView 控件中各个项的功能。
558:
559: DataPager
560: 一个服务器控件,可为实现 IPageableItemContainer 接口的控件(例如 ListView 控件)提供分页功能。
561:
562: NumericPagerField
563: 一个 DataPager 字段,它允许用户按页码选择数据页。
564:
565: NextPreviousPagerField
566: 一个 DataPager 字段,它允许用户逐页浏览数据页,或者跳到第一个或最后一个数据页。
567:
568: TemplatePagerField
569: 一个 DataPager 字段,它允许用户创建自定义分页用户界面。
570:
571:
572: 返回页首
573:
574: “折叠”图像代码示例
575: 以下部分包含使用 ListView 控件的代码示例。
576:
577: 帮助和演练主题
578: 演练:使用 ListView Web 服务器控件对数据进行显示、分页和排序
579:
580: 演练:使用 ListView Web 服务器控件修改数据
581:
582: 返回页首
583:
584: “折叠”图像请参见
585: 概念
586: ASP.NET 全球化和本地化
587: ASP.NET 辅助功能
588: ASP.NET 数据绑定 Web 服务器控件概述
589: 绑定到数据库
590: 数据源控件概述
591: “页脚”图像发送反馈意见,就此主题向 Microsoft 发送反馈意见。