ASP.NET提供的大部分数据绑定控件都是使用额外的标记自动封装显示数据,举例来说,GridView控件在一个HTML表格(<table>)中显示它的数据,每条记录显示一行(<tr>),每个字段显示为一个单元格(<td>),虽然你可以使用TemplateField组件自定义GridView的外观,但GridView的输出仍然是限制在一个table组件中的,但有时候你想要完全控制由数据绑定控件产生的HTML标记的外观,这正是ListView控件的优势,ListView控件不是使用额外的标记来封装它的输出内容,而是靠你指定的精确的HTML描述,使用ListView控件内置的模板就可以指定精确的标记,表1列出了ListView控件支持的模板。
在Aspx页中的代码:
<EditItemTemplate>
<asp教程:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="男">男</asp:ListItem>
<asp:ListItem Value="女">女</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
添加事件:ItemUpdating和ItemCreated事件
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
//在更新之前绑定DropDownList
DropDownList ddGender = (DropDownList)ListView1.Items[e.ItemIndex].FindControl("DropDownList1");
e.NewValues["Gender"] = ddGender.SelectedValue;
}
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
DropDownList ddlGender = (DropDownList)e.Item.FindControl("DropDownList1");
if (ddlGender != null)
{
ListViewDataItem lvDataItem = (ListViewDataItem)e.Item;
DataRowView rowView = (DataRowView)lvDataItem.DataItem;
if (rowView != null)
{
var userRow = (DataSetUsers.UsersRow)rowView.Row;
ddlGender.SelectedValue = userRow.Gender;
}
}
}
}