ButtonFieldBase.CausesValidation Propriedade
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 um valor que indica se a validação é realizada quando um botão em um objeto de ButtonFieldBase é clicado.
public:
virtual property bool CausesValidation { bool get(); void set(bool value); };
public virtual bool CausesValidation { get; set; }
member this.CausesValidation : bool with get, set
Public Overridable Property CausesValidation As Boolean
true
para executar a validação quando um botão em um ButtonFieldBase é clicado; caso contrário, false
. O padrão é false
.
O exemplo de código a ButtonField seguir demonstra como usar a CausesValidation propriedade para executar a validação quando o botão é clicado no objeto de um GridView controle.
<%@ Page language="C#" %>
<script runat="server">
void AuthorsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// If multiple ButtonField columns are used, use the
// CommandName property to determine which button was clicked.
switch(e.CommandName)
{
case "Edit":
AuthorsGridView.Columns[0].Visible = false;
AuthorsGridView.Columns[1].Visible = true;
break;
case "Update":
AuthorsGridView.Columns[0].Visible = true;
AuthorsGridView.Columns[1].Visible = false;
break;
default:
// Do nothing.
break;
}
}
void AuthorsGridView_RowUpdating (Object sender, GridViewUpdateEventArgs e)
{
// Retrieve the row being edited.
int index = AuthorsGridView.EditIndex;
GridViewRow row = AuthorsGridView.Rows[index];
// Retrieve the new value for the author's first name from the row.
// In this example, the author's first name is in the second cell
// of the row (index 1). To get the value, first retrieve the TextBox
// that contains the value.
TextBox firstNameTextBox = (TextBox)row.Cells[1].FindControl("FirstNameTextBox");
// Make sure the control was found.
String firstName = "";
if(firstNameTextBox != null)
{
firstName = firstNameTextBox.Text;
}
// Retrieve the new value for the author's last name from the row.
// In this example, the author's last name is in the third cell
// of the row (index 2).
TextBox lastNameTextBox = (TextBox)row.Cells[2].FindControl("LastNameTextBox");
String lastName = "";
if(lastNameTextBox != null)
{
lastName = lastNameTextBox.Text;
}
// Because custom TemplateField field columns are used, parameters
// are not automatically created and passed to the data source control.
// Create Parameter objects to represent the fields to update and
// add the Parameter objects to the UpdateParameters collection.
Parameter lastNameParameter = new Parameter("au_lname", TypeCode.String, lastName);
Parameter firstNameParameter = new Parameter("au_fname", TypeCode.String, firstName);
// Clear the UpdateParameters collection before adding the
// Parameter objects. Otherwise, there will be duplicate
// parameters.
AuthorsSqlDataSource.UpdateParameters.Clear();
AuthorsSqlDataSource.UpdateParameters.Add(lastNameParameter);
AuthorsSqlDataSource.UpdateParameters.Add(firstNameParameter);
}
</script>
<head runat="server">
<title>ButtonFieldBase CausesValidation Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>ButtonFieldBase CausesValidation Example</h3>
<!-- Populate the Columns collection declaratively. -->
<asp:gridview id="AuthorsGridView"
datasourceid="AuthorsSqlDataSource"
cellpadding="5"
autogeneratecolumns="false"
datakeynames="au_id"
onrowcommand="AuthorsGridView_RowCommand"
onrowupdating="AuthorsGridView_RowUpdating"
runat="server">
<columns>
<asp:buttonfield commandname="Edit"
causesvalidation="false"
text="Edit"
headertext="Edit Author">
</asp:buttonfield>
<asp:buttonfield commandname="Update"
visible="false"
causesvalidation="true"
text="Update"
validationgroup="NameGroup"
headertext="Update Author">
</asp:buttonfield>
<asp:templatefield headertext="Last Name">
<itemtemplate>
<%# Eval("au_lname") %>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="LastNameTextBox"
text='<%# Eval("au_lname") %>'
width="175"
runat="server" /><br />
<asp:RequiredFieldValidator ID="LastNameRequiredValidator"
ControlToValidate="LastNameTextBox"
ErrorMessage="Please enter a last name."
ValidationGroup="NameGroup"
Runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:templatefield headertext="First Name">
<itemtemplate>
<%# Eval("au_fname") %>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="FirstNameTextBox"
text='<%# Eval("au_fname") %>'
width="175"
runat="server" /><br />
<asp:RequiredFieldValidator ID="FirstNameRequiredValidator"
ControlToValidate="FirstNameTextBox"
ErrorMessage="Please enter a first name."
ValidationGroup="NameGroup"
Runat="server" />
</edititemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Pubs sample database. -->
<asp:sqldatasource id="AuthorsSqlDataSource"
selectcommand="SELECT [au_id], [au_lname], [au_fname] FROM [authors]"
updatecommand="UPDATE authors SET au_lname=@au_lname, au_fname=@au_fname WHERE (authors.au_id = @au_id)"
connectionstring="server=localhost;database=pubs;integrated security=SSPI"
runat="server">
</asp:sqldatasource>
</div>
</form>
</body>
</html>
<%@ Page language="VB" %>
<script runat="server">
Sub AuthorsGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
' If multiple ButtonField columns are used, use the
' CommandName property to determine which button was clicked.
Select Case e.CommandName
Case "Edit"
AuthorsGridView.Columns(0).Visible = False
AuthorsGridView.Columns(1).Visible = True
Case "Update"
AuthorsGridView.Columns(0).Visible = True
AuthorsGridView.Columns(1).Visible = False
Case Else
' Do nothing.
End Select
End Sub
Sub AuthorsGridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
' Retrieve the row being edited.
Dim index As Integer = AuthorsGridView.EditIndex
Dim row As GridViewRow = AuthorsGridView.Rows(index)
' Retrieve the new value for the author's first name from the row.
' In this example, the author's first name is in the second cell
' of the row (index 1). To get the value, first retrieve the TextBox
' that contains the value.
Dim firstNameTextBox As TextBox = CType(row.Cells(1).FindControl("FirstNameTextBox"), TextBox)
' Make sure the control was found.
Dim firstName As String = ""
If Not firstNameTextBox Is Nothing Then
firstName = firstNameTextBox.Text
End If
' Retrieve the new value for the author's last name from the row.
' In this example, the author's last name is in the third cell
' of the row (index 2).
Dim lastNameTextBox As TextBox = CType(row.Cells(2).FindControl("LastNameTextBox"), TextBox)
Dim lastName As String = ""
If Not lastNameTextBox Is Nothing Then
lastName = lastNameTextBox.Text
End If
' Because custom TemplateField field columns are used, parameters
' are not automatically created and passed to the data source control.
' Create Parameter objects to represent the fields to update and
' add the Parameter objects to the UpdateParameters collection.
Dim lastNameParameter As New Parameter("au_lname", TypeCode.String, lastName)
Dim firstNameParameter As New Parameter("au_fname", TypeCode.String, firstName)
' Clear the UpdateParameters collection before adding the
' Parameter objects. Otherwise, there will be duplicate
' parameters.
AuthorsSqlDataSource.UpdateParameters.Clear()
AuthorsSqlDataSource.UpdateParameters.Add(lastNameParameter)
AuthorsSqlDataSource.UpdateParameters.Add(firstNameParameter)
End Sub
</script>
<head runat="server">
<title>ButtonFieldBase CausesValidation Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>ButtonFieldBase CausesValidation Example</h3>
<!-- Populate the Columns collection declaratively. -->
<asp:gridview id="AuthorsGridView"
datasourceid="AuthorsSqlDataSource"
cellpadding="5"
autogeneratecolumns="false"
datakeynames="au_id"
onrowcommand="AuthorsGridView_RowCommand"
onrowupdating="AuthorsGridView_RowUpdating"
runat="server">
<columns>
<asp:buttonfield commandname="Edit"
causesvalidation="false"
text="Edit"
headertext="Edit Author">
</asp:buttonfield>
<asp:buttonfield commandname="Update"
visible="false"
causesvalidation="true"
text="Update"
validationgroup="NameGroup"
headertext="Update Author">
</asp:buttonfield>
<asp:templatefield headertext="Last Name">
<itemtemplate>
<%# Eval("au_lname") %>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="LastNameTextBox"
text='<%# Eval("au_lname") %>'
width="175"
runat="server" /><br />
<asp:RequiredFieldValidator ID="LastNameRequiredValidator"
ControlToValidate="LastNameTextBox"
ErrorMessage="Please enter a last name."
ValidationGroup="NameGroup"
Runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:templatefield headertext="First Name">
<itemtemplate>
<%# Eval("au_fname") %>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="FirstNameTextBox"
text='<%# Eval("au_fname") %>'
width="175"
runat="server" /><br />
<asp:RequiredFieldValidator ID="FirstNameRequiredValidator"
ControlToValidate="FirstNameTextBox"
ErrorMessage="Please enter a first name."
ValidationGroup="NameGroup"
Runat="server" />
</edititemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Pubs sample database. -->
<asp:sqldatasource id="AuthorsSqlDataSource"
selectcommand="SELECT [au_id], [au_lname], [au_fname] FROM [authors]"
updatecommand="UPDATE authors SET au_lname=@au_lname, au_fname=@au_fname WHERE (authors.au_id = @au_id)"
connectionstring="server=localhost;database=pubs;integrated security=SSPI"
runat="server">
</asp:sqldatasource>
</div>
</form>
</body>
</html>
Os grupos de validação permitem atribuir controles de validação em uma página a uma categoria específica. Cada grupo de validação pode ser validado independentemente de outros grupos de validação na página. Use a ValidationGroup propriedade para especificar o nome do grupo de validação para o qual o ButtonFieldBase objeto causa validação quando ele retorna ao servidor.
A ValidationGroup propriedade só tem um efeito quando o valor da CausesValidation propriedade é definido como true
. Quando você especifica um valor para a ValidationGroup propriedade, somente os controles de validação que fazem parte do grupo especificado são validados quando as ButtonFieldBase postagens voltam para o servidor. Se você não especificar um valor para a ValidationGroup propriedade e a CausesValidation propriedade estiver definida como true
, todos os controles de validação na página que não são atribuídos a um grupo de validação serão validados quando as ButtonFieldBase postagens de volta para o servidor.
O valor dessa propriedade é armazenado no estado de exibição.