ListView.InsertNewItem(Boolean) Método
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í.
Inserta el registro actual en el origen de datos.
public:
virtual void InsertNewItem(bool causesValidation);
public virtual void InsertNewItem (bool causesValidation);
abstract member InsertNewItem : bool -> unit
override this.InsertNewItem : bool -> unit
Public Overridable Sub InsertNewItem (causesValidation As Boolean)
Parámetros
- causesValidation
- Boolean
Es true
para realizar la validación de la página cuando se llama a este método; de lo contrario, es false
.
Excepciones
El control ListView no tiene un elemento de inserción.
o bien
El objeto DataSourceView asociado al control ListView es null
.
Ejemplos
En el ejemplo siguiente se muestra cómo usar el InsertNewItem método para insertar mediante programación el contenido del elemento de inserción de un ListView control en el origen de datos.
Importante
Este ejemplo tiene un cuadro de texto que acepta datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para más información, consulte Información general sobre los ataques mediante scripts.
<%@ 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 InsertButton_Click(object sender, EventArgs e)
{
// Clears any existing message.
MessageLabel.Text = "";
// Use the InsertNewItem method to programmatically insert
// the current record in the ListView control.
DepartmentsListView.InsertNewItem(true);
}
protected void DepartmentsListView_ItemInserted(object sender,
ListViewInsertedEventArgs e)
{
// Handles exceptions that might occur
// during the insert operation.
if (e.Exception != null)
{
if (e.AffectedRows == 0)
{
e.KeepInInsertMode = true;
MessageLabel.Text = "An exception occurred inserting the new department. " +
"Please verify your values and try again.";
}
else
MessageLabel.Text = "An exception occurred inserting the new department. " +
"Please verify the values in the newly inserted item.";
e.ExceptionHandled = true;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView InsertNewItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView InsertNewItem Example</h3>
<h5>Departments</h5>
<asp:ListView ID="DepartmentsListView"
DataSourceID="DepartmentsDataSource"
DataKeyNames="DepartmentID"
InsertItemPosition="FirstItem"
OnItemInserted="DepartmentsListView_ItemInserted"
runat="server" >
<LayoutTemplate>
<table runat="server" id="tblDepartments" width="640px" border="1">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label ID="NameLabel" runat="Server" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label ID="GroupNameLabel" runat="Server" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr style="background-color:#00BFFF">
<td>
<asp:Label runat="server" ID="NameLabel" AssociatedControlID="NameTextBox"
Text="Name:" Font-Bold="true"/><br />
<asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" AssociatedControlID="GroupNameTextBox"
Text="Group Name:" Font-Bold="true" /><br />
<asp:TextBox ID="GroupNameTextBox" runat="server"
Text='<%#Bind("GroupName") %>' MaxLength="50" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView><br />
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server" /> <br />
<asp:Button ID="InsertButton"
Text="Insert new record"
OnClick="InsertButton_Click"
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="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName FROM HumanResources.Department"
InsertCommand="INSERT INTO HumanResources.Department(Name, GroupName)
VALUES (@Name, @GroupName)">
</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 InsertButton_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Clears any existing message.
MessageLabel.Text = ""
' Use the InsertNewItem method to programmatically insert
' the current record in the ListView control.
DepartmentsListView.InsertNewItem(True)
End Sub
Protected Sub DepartmentsListView_ItemInserted(ByVal sender As Object, _
ByVal e As ListViewInsertedEventArgs)
' Handles exceptions that might occur
' during the insert operation.
If Not (e.Exception Is Nothing) Then
If e.AffectedRows = 0 Then
e.KeepInInsertMode = True
MessageLabel.Text = "An exception occurred inserting the new department. " & _
"Please verify your values and try again."
Else
MessageLabel.Text = "An exception occurred inserting the new department. " & _
"Please verify the values in the newly inserted item."
End If
e.ExceptionHandled = True
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView InsertNewItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView InsertNewItem Example</h3>
<h5>Departments</h5>
<asp:ListView ID="DepartmentsListView"
DataSourceID="DepartmentsDataSource"
DataKeyNames="DepartmentID"
InsertItemPosition="FirstItem"
OnItemInserted="DepartmentsListView_ItemInserted"
runat="server" >
<LayoutTemplate>
<table runat="server" id="tblDepartments" width="640px" border="1">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label ID="NameLabel" runat="Server" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label ID="GroupNameLabel" runat="Server" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr style="background-color:#00BFFF">
<td>
<asp:Label runat="server" ID="NameLabel" AssociatedControlID="NameTextBox"
Text="Name:" Font-Bold="true"/><br />
<asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" AssociatedControlID="GroupNameTextBox"
Text="Group Name:" Font-Bold="true" /><br />
<asp:TextBox ID="GroupNameTextBox" runat="server"
Text='<%#Bind("GroupName") %>' MaxLength="50" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView><br />
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server" /> <br />
<asp:Button ID="InsertButton"
Text="Insert new record"
OnClick="InsertButton_Click"
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="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName FROM HumanResources.Department"
InsertCommand="INSERT INTO HumanResources.Department(Name, GroupName)
VALUES (@Name, @GroupName)">
</asp:SqlDataSource>
</form>
</body>
</html>
Comentarios
Use el InsertNewItem método para insertar mediante programación un elemento en el origen de datos. Este método se usa normalmente para insertar un elemento desde fuera del ListView control, como desde un control diferente en la página.
Para usar el InsertNewItem método , debe definir una InsertItemTemplate plantilla en el ListView control . También debe establecer la InsertItemPosition propiedad en un valor diferente de InsertItemPosition.None. Para especificar si la validación de página se realiza antes de la operación de inserción, use el causesValidation
parámetro .
Este método genera los ItemInserted eventos y ItemInserting .