⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webdatalist.aspx

📁 书籍教程 >> .Net教程 >> asp.net编程精彩百例
💻 ASPX
📖 第 1 页 / 共 2 页
字号:
    </ItemTemplate>

</ASP:DataList>
</Tab>

<Tab Name="JScript">
&lt;script runat="server"&gt;

    protected function MyDataList_ItemCommand(sender:Object, e:DataListCommandEventArgs ) : void {
        var command:String = e.CommandName;

        switch(command) {
          case "Discuss":
            ShowDiscussions(DataRowView(e.Item.DataItem));  break;
          case "Ratings":
            ShowRatings(DataRowView(e.Item.DataItem));  break;
        }
    }

&lt;/script&gt;

&lt;ASP:DataList id="MyDataList" OnItemCommand="MyDataList_ItemCommand" runat="server"&gt;

    &lt;ItemTemplate&gt;

        &lt;asp:linkbutton CommandName="Ratings" runat="server"&gt;
            View Ratings
        &lt;/asp:linkbutton&gt;
        |
        &lt;asp:linkbutton CommandName="Discuss" runat="server"&gt;
            View Discussions
        &lt;/asp:linkbutton&gt;

    &lt;/ItemTemplate&gt;

&lt;/ASP:DataList&gt;
</Tab>

</Acme:TabControl><p>

<p>
注意,因为可以有不止一个命令激发此事件处理程序,所以必须使用 switch 语句确定具体激发的命令。下面的示例说明此代码的运行。
<p>

<Acme:LangSwitch runat="server">
  <CsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/CS/datalist5.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist5.src"
  Icon="/quickstart/aspplus/images/datalist5.gif"
  Caption="C# Datalist5.aspx"
  runat="server" />
  </CsTemplate>
  <VbTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/VB/datalist5.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist5.src"
  Icon="/quickstart/aspplus/images/datalist5.gif"
  Caption="VB Datalist5.aspx"
  runat="server" />
  </VbTemplate>
  <JsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/JS/datalist5.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist5.src"
  Icon="/quickstart/aspplus/images/datalist5.gif"
  Caption="JScript Datalist5.aspx"
  runat="server" />
  </JsTemplate>
</Acme:LangSwitch>

<!--BEGIN SECTION--> <br> <a name="selectandedit"><br> <span class="subhead">使用选择模板和编辑模板</span>
<p>

除了使用页级别事件处理程序处理 <b>Select</b> 命令外,<b>DataList</b> 还可以在内部响应此事件。如果为 <b>DataList</b> 定义了 <b>SelectedItemTemplate</b>,则 <b>DataList</b> 为激发了 <b>Select</b> 命令的项呈现此模板。下面的示例使用 <b>SelectedItemTemplate</b> 使所选书的书名成为粗体。
<p>

<Acme:LangSwitch runat="server">
  <CsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/CS/datalist6.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist6.src"
  Icon="/quickstart/aspplus/images/datalist6.gif"
  Caption="C# Datalist6.aspx"
  runat="server" />
  </CsTemplate>
  <VbTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/VB/datalist6.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist6.src"
  Icon="/quickstart/aspplus/images/datalist6.gif"
  Caption="VB Datalist6.aspx"
  runat="server" />
  </VbTemplate>
  <JsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/JS/datalist6.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist6.src"
  Icon="/quickstart/aspplus/images/datalist6.gif"
  Caption="JScript Datalist6.aspx"
  runat="server" />
  </JsTemplate>
</Acme:LangSwitch>

<p>
<b>DataList</b> 还支持一个 <b>EditItemTemplate</b> 来呈现索引等于 <b>DataList</b> 的 <b>EditItemIndex</b> 属性的项。有关如何编辑和更新工作的详细信息,请参考本教程<a href="webdataaccess.aspx">数据访问</a>一节中的<a href="webdataaccess.aspx#update">更新数据</a>主题。
<p>

<Acme:LangSwitch runat="server">
  <CsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/CS/datalist7.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist7.src"
  Icon="/quickstart/aspplus/images/datalist7.gif"
  Caption="C# Datalist7.aspx"
  runat="server" />
  </CsTemplate>
  <VbTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/VB/datalist7.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist7.src"
  Icon="/quickstart/aspplus/images/datalist7.gif"
  Caption="VB Datalist7.aspx"
  runat="server" />
  </VbTemplate>
  <JsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/JS/datalist7.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist7.src"
  Icon="/quickstart/aspplus/images/datalist7.gif"
  Caption="JScript Datalist7.aspx"
  runat="server" />
  </JsTemplate>
</Acme:LangSwitch>


<!--BEGIN SECTION--> <br> <a name="finding"><br> <span class="subhead">查找模板内的控件</span>
<p>

有时有必要查找模板内包含的控件。如果在模板中给控件赋予了一个 ID,则可以从其容器(父层次结构中支持 <b>INamingContainer</b> 的第一个控件)中检索此控件。本例中,容器是 <b>DataListItem</b> 控件。注意,即使若干控件具有同一 ID(由于 <b>DataList</b> 的重复),每个控件在逻辑上也包含在 <b>DataListItem</b> 容器控件的命名空间中。

<p>
可以在 <b>DataList</b> 的 <b>Items</b> 集合中遍历以检索给定索引的 <b>DataListItem</b>,然后调用 <b>DataListItem</b> 的 <b>FindControl</b> 方法(从基 <b>Control</b> 类继承)检索具有特定 ID 的控件。
<p>

<p><Acme:TabControl runat="server">
<Tab Name="C#">
&lt;script runat="server"&gt;

    public void Page_Load(Object sender, EventArgs E)) {
        // set datasource and call databind here

        for (int i=0; i&lt;MyDataList.Items.Count; i++) {
           String isChecked = ((CheckBox) MyDataList.Items[i].FindControl("Save")).Checked.ToString();
           If (isChecked == "True") {
             ...
           }
        }
    }
&lt;/script&gt;

&lt;ASP:DataList id="MyDataList" runat="server"&gt;

    &lt;ItemTemplate&gt;
         &lt;asp:CheckBox id="Save" runat="server"/&gt; &lt;b&gt;Save to Favorites&lt;/b&gt;
    &lt;/ItemTemplate&gt;

&lt;/ASP:DataList&gt;
</Tab>

<Tab Name="VB">
&lt;script runat="server"&gt;

    Public Sub Page_Load(sender As Object, E As EventArgs))
        ' set datasource and call databind here

        For I=0 To MyDataList.Items.Count-1
           Dim IsChecked As String =  MyDataList.Items(i).FindControl("Save").Checked.ToString()
           If IsChecked = "True" Then
             ...
           End If
        Next
    End Sub
&lt;/script&gt;

&lt;ASP:DataList id="MyDataList" runat="server"&gt;

    &lt;ItemTemplate&gt;
         &lt;asp:CheckBox id="Save" runat="server"/&gt; &lt;b&gt;Save to Favorites&lt;/b&gt;
    &lt;/ItemTemplate&gt;

&lt;/ASP:DataList&gt;
</Tab>

<Tab Name="JScript">
&lt;script runat="server"&gt;

    public function Page_Load(sender:Object, E:EventArgs)) : void {
        // set datasource and call databind here

        for (var i:int=0; i&lt;MyDataList.Items.Count; i++) {
           var isChecked:String = (CheckBox(MyDataList.Items[i].FindControl("Save"))).Checked.ToString();
           If (isChecked == "True") {
             ...
           }
        }
    }
&lt;/script&gt;

&lt;ASP:DataList id="MyDataList" runat="server"&gt;

    &lt;ItemTemplate&gt;
         &lt;asp:CheckBox id="Save" runat="server"/&gt; &lt;b&gt;Save to Favorites&lt;/b&gt;
    &lt;/ItemTemplate&gt;

&lt;/ASP:DataList&gt;
</Tab>

</Acme:TabControl><p>

<p>
下面的示例说明此代码的运行。
<p>

<Acme:LangSwitch runat="server">
  <CsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/CS/datalist8.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist8.src"
  Icon="/quickstart/aspplus/images/datalist8.gif"
  Caption="C# Datalist8.aspx"
  runat="server" />
  </CsTemplate>
  <VbTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/VB/datalist8.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist8.src"
  Icon="/quickstart/aspplus/images/datalist8.gif"
  Caption="VB Datalist8.aspx"
  runat="server" />
  </VbTemplate>
  <JsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/webforms/customize/JS/datalist8.aspx"
  ViewSource="/quickstart/aspplus/samples/webforms/customize/datalist8.src"
  Icon="/quickstart/aspplus/images/datalist8.gif"
  Caption="JScript Datalist8.aspx"
  runat="server" />
  </JsTemplate>
</Acme:LangSwitch>

<!--BEGIN SECTION--> <a name="endofsection">

<h4><a name="summary">本节小结</a></h4>
<ol>
<li><b>DataList</b> 和 <b>Repeater</b> 控件为开发人员提供了对呈现数据绑定列表的微调控件。
<li>使用模板(如 <b>HeaderTemplate</b>、<b>FooterTemplate</b> 或 <b>ItemTemplate</b>)控制绑定数据的呈现。
<li><b>Repeater</b> 控件是通用用途的迭代程序,不在呈现中插入模板中不包含的任何内容。
<li><b>DataList</b> 控件对项的布局和样式提供更多的控制,并为格式设置输出自己的呈现代码。
<li><b>DataList</b> 支持 <b>Select</b>、<b>Edit/Update/Cancel</b> 和 <b>Item</b><b>Command</b> 事件。通过将事件处理程序与 <b>DataList</b> 的 <b>Command</b> 事件连接,可以在页级别处理这些事件。
<li><b>DataList</b> 支持 <b>SelectedItemTemplate</b> 和 <b>EditItemTemplate</b> 来控制选定项或可编辑项的呈现。
<li>可以使用 <b>Control.FindControl</b> 方法以编程方式从模板检索控件。这应在从 <b>DataList</b> 的 Items 集合中检索的 <b>DataListItem</b> 上调用。
</ol>
<p>

<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -