zoukankan      html  css  js  c++  java
  • ListView Web 服务器控件概述(MSDN)

       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="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="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:          &nbsp;
     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 发送反馈意见。
  • 相关阅读:
    网络协议
    窗口TOPMOST属性设置失败
    自绘之----对话框
    图书推荐
    MFC自绘之WM_ERASEBKGND
    批处理获取当前路径
    checkBox 自绘
    第四章:基于TCP套接字编程(三)
    第四章:基于TCP套接字编程(二)
    第四章:基于TCP套接字编程(一)
  • 原文地址:https://www.cnblogs.com/kim0zh/p/3420902.html
Copyright © 2011-2022 走看看