ListView.SelectedValue Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene el valor de la clave de datos del elemento seleccionado en un control ListView.
public:
property System::Object ^ SelectedValue { System::Object ^ get(); };
[System.ComponentModel.Browsable(false)]
public object SelectedValue { get; }
[<System.ComponentModel.Browsable(false)>]
member this.SelectedValue : obj
Public ReadOnly Property SelectedValue As Object
Valor de propiedad
Valor de la clave de datos del elemento seleccionado en un control ListView.
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo usar el primer campo de clave como parámetro en un escenario de maestro y detalle. Cuando se selecciona un elemento en el ListView control , la SelectedValue propiedad se usa como para PropertyName el ControlParameter objeto . Este objeto de parámetro se usa a su vez por el SqlDataSource control al que está enlazado el segundo ListView control.
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void CategoriesListView_OnItemDeleting(object sender, ListViewDeleteEventArgs e)
{
if (SubCategoriesGridView.Rows.Count > 0)
{
MessageLabel.Text = "You cannot delete a category that has sub-categories.";
e.Cancel = true;
}
}
protected void Page_Load()
{
MessageLabel.Text = String.Empty;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Subcategories List</title>
</head>
<body>
<form id="form1" runat="server">
<b>Categories</b>
<br />
<asp:Label ForeColor="Red" runat="server" ID="MessageLabel" /><br />
<asp:ListView runat="server"
ID="CategoriesListView"
OnItemDeleting="CategoriesListView_OnItemDeleting"
DataSourceID="CategoriesDataSource"
DataKeyNames="ProductCategoryID">
<LayoutTemplate>
<table runat="server" id="tblCategories"
cellspacing="0" cellpadding="1" width="440px" border="1">
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td style="width:40px">
<asp:LinkButton runat="server" ID="SelectCategoryButton"
Text="Select" CommandName="Select" />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr runat="server" style="background-color:#90EE90">
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td style="width:40px">
<asp:LinkButton runat="server" ID="SelectCategoryButton"
Text="Delete" CommandName="Delete" />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<br />
<b>Subcategories</b>
<asp:GridView runat="server" ID="SubCategoriesGridView" Width="300px"
DataSourceID="SubCategoriesDataSource" DataKeyNames="ProductSubcategoryID"
AutoGenerateColumns="True" />
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="CategoriesDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductCategoryID], [Name]
FROM Production.ProductCategory">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SubCategoriesDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductSubcategoryID], [Name]
FROM Production.ProductSubcategory
WHERE ProductCategoryID = @ProductCategoryID
ORDER BY [Name]">
<SelectParameters>
<asp:ControlParameter Name="ProductCategoryID" DefaultValue="0"
ControlID="CategoriesListView" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub CategoriesListView_OnItemDeleting(sender As Object, e As ListViewDeleteEventArgs)
If SubCategoriesGridView.Rows.Count > 0 Then
MessageLabel.Text = "You cannot delete a category that has sub-categories."
e.Cancel = True
End If
End Sub
Protected Sub Page_Load()
MessageLabel.Text = String.Empty
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Subcategories List</title>
</head>
<body>
<form id="form1" runat="server">
<b>Categories</b>
<br />
<asp:Label ForeColor="Red" runat="server" ID="MessageLabel" /><br />
<asp:ListView runat="server"
ID="CategoriesListView"
OnItemDeleting="CategoriesListView_OnItemDeleting"
DataSourceID="CategoriesDataSource"
DataKeyNames="ProductCategoryID">
<LayoutTemplate>
<table runat="server" id="tblCategories"
cellspacing="0" cellpadding="1" width="440px" border="1">
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td style="width:40px">
<asp:LinkButton runat="server" ID="SelectCategoryButton"
Text="Select" CommandName="Select" />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr runat="server" style="background-color:#90EE90">
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td style="width:40px">
<asp:LinkButton runat="server" ID="SelectCategoryButton"
Text="Delete" CommandName="Delete" />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<br />
<b>Subcategories</b>
<asp:GridView runat="server" ID="SubCategoriesGridView" Width="300px"
DataSourceID="SubCategoriesDataSource" DataKeyNames="ProductSubcategoryID"
AutoGenerateColumns="True" />
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="CategoriesDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductCategoryID], [Name]
FROM Production.ProductCategory">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SubCategoriesDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductSubcategoryID], [Name]
FROM Production.ProductSubcategory
WHERE ProductCategoryID = @ProductCategoryID
ORDER BY [Name]">
<SelectParameters>
<asp:ControlParameter Name="ProductCategoryID" DefaultValue="0"
ControlID="CategoriesListView" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
En el ejemplo siguiente se muestra cómo usar la SelectedValue propiedad para determinar el valor del campo de clave.
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void DepartmentsListView_SelectedIndexChanged(object sender, EventArgs e)
{
MessageLabel.Text = "The key value is " +
DepartmentsListView.SelectedValue.ToString() + ".";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView SelectedValue Example</title>
<style type="text/css">
.header
{
border: 1px solid #008080;
background-color: #008080;
color: White;
}
.item td { border: 1px solid #008080; }
.selection td
{
border: 1px solid #008080;
background-color: #7FFF00;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView SelectedValue Example</h3>
<asp:ListView runat="server"
ID="DepartmentsListView"
DataSourceID="DepartmentDataSource"
DataKeyNames="DepartmentID"
OnSelectedIndexChanged="DepartmentsListView_SelectedIndexChanged">
<LayoutTemplate>
<b>Department List</b>
<br />
<table width="500px" runat="server" id="tblDepartments">
<tr class="header" runat="server">
<th runat="server"> </th>
<th runat="server">Department Name</th>
<th runat="server">Group Name</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr class="item" runat="server">
<td>
<asp:LinkButton runat="server"
ID="SelectButton"
Text="Select"
CommandName="Select" />
</td>
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr class="selection" runat="server">
<td> </td>
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<br/>
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="DepartmentDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department">
</asp:SqlDataSource>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub DepartmentsListView_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
MessageLabel.Text = "The key value is " & _
DepartmentsListView.SelectedValue.ToString() & "."
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView SelectedValue Example</title>
<style type="text/css">
.header
{
border: 1px solid #008080;
background-color: #008080;
color: White;
}
.item td { border: 1px solid #008080; }
.selection td
{
border: 1px solid #008080;
background-color: #7FFF00;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView SelectedValue Example</h3>
<asp:ListView runat="server"
ID="DepartmentsListView"
DataSourceID="DepartmentDataSource"
DataKeyNames="DepartmentID"
OnSelectedIndexChanged="DepartmentsListView_SelectedIndexChanged">
<LayoutTemplate>
<b>Department List</b>
<br />
<table width="500px" runat="server" id="tblDepartments">
<tr class="header" runat="server">
<th runat="server"> </th>
<th runat="server">Department Name</th>
<th runat="server">Group Name</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr class="item" runat="server">
<td>
<asp:LinkButton runat="server"
ID="SelectButton"
Text="Select"
CommandName="Select" />
</td>
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr class="selection" runat="server">
<td> </td>
<td>
<asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<br/>
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="DepartmentDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department">
</asp:SqlDataSource>
</form>
</body>
</html>
Comentarios
La DataKeyNames propiedad se puede establecer en una lista separada por comas de nombres de campo que representan la clave principal del origen de datos. Si se establece, el ListView control crea automáticamente un DataKey objeto para cada elemento del control utilizando el valor o los valores del campo o campos especificados. A DataKey continuación, los objetos se agregan a la colección del DataKeys control.
Normalmente, la DataKeys propiedad se usa para obtener el DataKey objeto de un elemento de datos específico en el ListView control . Sin embargo, si desea obtener solo el DataKey objeto del elemento seleccionado actualmente, puede usar la SelectedDataKey propiedad como acceso directo. También puede determinar directamente el valor de clave de datos del primer campo de clave del elemento seleccionado mediante la SelectedValue propiedad .
Si va a crear un ControlParameter objeto y desea tener acceso a un campo de clave distinto del primer campo, use la SelectedDataKey propiedad . Para obtener un ejemplo, vea la SelectedDataKey propiedad .