📄 webdatalist.aspx
字号:
</ItemTemplate>
</ASP:DataList>
</Tab>
<Tab Name="JScript">
<script runat="server">
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;
}
}
</script>
<ASP:DataList id="MyDataList" OnItemCommand="MyDataList_ItemCommand" runat="server">
<ItemTemplate>
<asp:linkbutton CommandName="Ratings" runat="server">
View Ratings
</asp:linkbutton>
|
<asp:linkbutton CommandName="Discuss" runat="server">
View Discussions
</asp:linkbutton>
</ItemTemplate>
</ASP:DataList>
</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#">
<script runat="server">
public void Page_Load(Object sender, EventArgs E)) {
// set datasource and call databind here
for (int i=0; i<MyDataList.Items.Count; i++) {
String isChecked = ((CheckBox) MyDataList.Items[i].FindControl("Save")).Checked.ToString();
If (isChecked == "True") {
...
}
}
}
</script>
<ASP:DataList id="MyDataList" runat="server">
<ItemTemplate>
<asp:CheckBox id="Save" runat="server"/> <b>Save to Favorites</b>
</ItemTemplate>
</ASP:DataList>
</Tab>
<Tab Name="VB">
<script runat="server">
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
</script>
<ASP:DataList id="MyDataList" runat="server">
<ItemTemplate>
<asp:CheckBox id="Save" runat="server"/> <b>Save to Favorites</b>
</ItemTemplate>
</ASP:DataList>
</Tab>
<Tab Name="JScript">
<script runat="server">
public function Page_Load(sender:Object, E:EventArgs)) : void {
// set datasource and call databind here
for (var i:int=0; i<MyDataList.Items.Count; i++) {
var isChecked:String = (CheckBox(MyDataList.Items[i].FindControl("Save"))).Checked.ToString();
If (isChecked == "True") {
...
}
}
}
</script>
<ASP:DataList id="MyDataList" runat="server">
<ItemTemplate>
<asp:CheckBox id="Save" runat="server"/> <b>Save to Favorites</b>
</ItemTemplate>
</ASP:DataList>
</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 + -