GridView.EditIndex Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o índice da linha para edição.
public:
virtual property int EditIndex { int get(); void set(int value); };
public virtual int EditIndex { get; set; }
member this.EditIndex : int with get, set
Public Overridable Property EditIndex As Integer
Valor da propriedade
O índice baseado em zero da linha a ser editada. O padrão é -1, que indica que nenhuma linha está sendo editada.
Exceções
O índice especificado é menor que -1.
Exemplos
O exemplo a seguir demonstra como usar a EditIndex propriedade para determinar qual linha foi atualizada depois que ela foi editada em um GridView controle. Uma mensagem é exibida para indicar que a atualização foi bem-sucedida.
<%@ 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">
void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// Clear the message label when the user enters edit mode.
if (e.CommandName == "Edit")
{
Message.Text = "";
}
}
void CustomersGridView_RowUpdated(Object sender, GridViewUpdatedEventArgs e)
{
// The update operation was successful. Retrieve the row being edited.
int index = CustomersGridView.EditIndex;
GridViewRow row = CustomersGridView.Rows[index];
// Notify the user that the update was successful.
Message.Text = "Updated record " + row.Cells[1].Text + ".";
}
void CustomersGridView_RowCancelingEdit(Object sender, GridViewCancelEditEventArgs e)
{
// The update operation was canceled. Display the appropriate message.
Message.Text = "Update operation canceled.";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView Rows Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>GridView Rows Example</h3>
<asp:label id="Message"
forecolor="Red"
runat="server"/>
<br/>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames property as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="CustomersGridView"
allowpaging="true"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
onrowcommand="CustomersGridView_RowCommand"
onrowupdated="CustomersGridView_RowUpdated"
onrowcancelingedit="CustomersGridView_RowCancelingEdit"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSqlDataSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
deletecommand="Delete from Customers where CustomerID = @CustomerID"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server">
</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">
Sub CustomersGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
' Clear the message label when the user enters edit mode.
If e.CommandName = "Edit" Then
Message.Text = ""
End If
End Sub
Sub CustomersGridView_RowUpdated(ByVal sender As Object, ByVal e As GridViewUpdatedEventArgs)
' The update operation was successful. Retrieve the row being edited.
Dim index As Integer = CustomersGridView.EditIndex
Dim row As GridViewRow = CustomersGridView.Rows(index)
' Notify the user that the update was successful.
Message.Text = "Updated record " & row.Cells(1).Text + "."
End Sub
Sub CustomersGridView_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
' The update operation was canceled. Display the appropriate message.
Message.Text = "Update operation canceled."
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView Rows Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>GridView Rows Example</h3>
<asp:label id="Message"
forecolor="Red"
runat="server"/>
<br/>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames property as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="CustomersGridView"
allowpaging="true"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
onrowcommand="CustomersGridView_RowCommand"
onrowupdated="CustomersGridView_RowUpdated"
onrowcancelingedit="CustomersGridView_RowCancelingEdit"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSqlDataSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
deletecommand="Delete from Customers where CustomerID = @CustomerID"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
Comentários
O índice de linha é baseado em zero (a primeira linha é a linha zero).
Normalmente, essa propriedade é usada apenas nos seguintes cenários, que envolvem manipuladores para eventos específicos:
Você deseja que o GridView controle seja aberto no modo de edição para uma linha específica na primeira vez que a página for exibida. Para fazer isso, você pode definir a EditIndex propriedade no manipulador para o Load evento da Page classe ou do GridView controle.
Você deseja saber qual linha foi editada depois que a linha foi atualizada. Para fazer isso, você pode recuperar o índice de linha da EditIndex propriedade no RowUpdated manipulador de eventos.
Você está associando o GridView controle a uma fonte de dados definindo a DataSource propriedade programaticamente. Nesse caso, você deve definir a EditIndex propriedade nos RowEditing manipuladores de eventos e RowCancelingEdit .
Se você definir a EditIndex propriedade após um postback ou em manipuladores para eventos gerados posteriormente ao Load evento, o GridView controle poderá não entrar no modo de edição da linha especificada. Se você ler o valor dessa propriedade em outros manipuladores de eventos, não será garantido que o índice reflita a linha que está sendo editada.
Para determinar em qual linha o usuário clicou em um botão Editar ou hiperlink antes que o GridView controle entre no modo de edição, você pode recuperar o índice de linha da NewEditIndex propriedade do GridViewEditEventArgs objeto no RowEditing manipulador de eventos.
Para impedir que o GridView controle entre no modo de edição depois que um usuário clicar em um botão Editar ou hiperlink, defina a Cancel propriedade do GridViewEditEventArgs objeto como true
no RowEditing manipulador de eventos.