2016-04-11 1 views
0

http://puu.sh/oeilN/bf8d288fee.pngC# Visual Studio: Wie aktualisiere ich GridView, ohne Validatoren für andere Felder zu aktivieren?

Hey Jungs, ich habe eine Gridview, und ich versuche, ein Ereignis zu verwenden (GridView1_RowUpdated), um den Benutzer zu sagen, dass die Aktualisierung erfolgreich war, aber jedes Mal, wenn ich versuchen, die Zeile mit dem Feldvalidatoren des anderen zu aktualisieren Texteingabefelder sind aktiviert. Was ich wissen möchte ist, wie kann ich das stoppen?

Die C# Datei:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class ProductsAdmin : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     lblUpdate.Text = ""; 
     lblErrorMessage.Text = ""; 
    } 
    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     lblErrorMessage.Text = ""; 
     SqlDataSource1.InsertParameters["ProductCode"].DefaultValue = txtProdNum.Text; 
     SqlDataSource1.InsertParameters["Name"].DefaultValue = txtName.Text; 
     SqlDataSource1.InsertParameters["Version"].DefaultValue = txtVersion.Text; 
     SqlDataSource1.InsertParameters["ReleaseDate"].DefaultValue = txtReleaseDate.Text; 

     try 
     { 
      SqlDataSource1.Insert(); 
     } 
     catch (Exception ex) 
     { 
      lblErrorMessage.Text = " A database connection error has occured: " + ex; 
     } 
    } 
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
    protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e) 
    { 
     lblUpdate.Text = ""; 
     if (e.Exception != null) 
     { 
      lblUpdate.Text = "A database error has occured: " + e; 
     } 
     else if (e.AffectedRows == 0) 
     { 
      lblUpdate.Text = "Another user may have updated this row already." + "<br/> Please try again."; 
     } 
     else 
     { 
      lblUpdate.Text = "Deletion succesful!"; 
     } 

    } 
    protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e) 
    { 
     lblUpdate.Text = ""; 
     if(e.Exception != null) 
     { 
      lblUpdate.Text = "A database error has occured: " + e; 
      e.ExceptionHandled = true; 
      e.KeepInEditMode = true; 
     } 
     else if (e.AffectedRows == 0) 
     { 
      lblUpdate.Text = "Another user may have updated this row already. <br/> Please try again"; 
     } 
     else 
     { 
      lblUpdate.Text = "Edit succesful!"; 
     } 
    } 
} 

Die HTML:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductsAdmin.aspx.cs" Inherits="ProductsAdmin" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <style type="text/css"> 
     .auto-style1 { 
      width: 100%; 
     } 
     .auto-style2 { 
      width: 113px; 
     } 
     .auto-style3 { 
      width: 143px; 
     } 
    </style> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 

    </div> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" DeleteCommand="DELETE FROM [Products] WHERE [ProductCode] = @original_ProductCode AND [Name] = @original_Name AND [Version] = @original_Version AND [ReleaseDate] = @original_ReleaseDate" InsertCommand="INSERT INTO [Products] ([ProductCode], [Name], [Version], [ReleaseDate]) VALUES (@ProductCode, @Name, @Version, @ReleaseDate)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [Products]" UpdateCommand="UPDATE [Products] SET [Name] = @Name, [Version] = @Version, [ReleaseDate] = @ReleaseDate WHERE [ProductCode] = @original_ProductCode AND [Name] = @original_Name AND [Version] = @original_Version AND [ReleaseDate] = @original_ReleaseDate"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_ProductCode" Type="String" /> 
       <asp:Parameter Name="original_Name" Type="String" /> 
       <asp:Parameter Name="original_Version" Type="Decimal" /> 
       <asp:Parameter Name="original_ReleaseDate" Type="DateTime" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="ProductCode" Type="String" /> 
       <asp:Parameter Name="Name" Type="String" /> 
       <asp:Parameter Name="Version" Type="Decimal" /> 
       <asp:Parameter Name="ReleaseDate" Type="DateTime" /> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="Name" Type="String" /> 
       <asp:Parameter Name="Version" Type="Decimal" /> 
       <asp:Parameter Name="ReleaseDate" Type="DateTime" /> 
       <asp:Parameter Name="original_ProductCode" Type="String" /> 
       <asp:Parameter Name="original_Name" Type="String" /> 
       <asp:Parameter Name="original_Version" Type="Decimal" /> 
       <asp:Parameter Name="original_ReleaseDate" Type="DateTime" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="ProductCode" DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Horizontal" OnRowDeleted="GridView1_RowDeleted" OnRowUpdated="GridView1_RowUpdated" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
      <Columns> 
       <asp:BoundField DataField="ProductCode" HeaderText="ProductCode" ReadOnly="True" SortExpression="ProductCode" /> 
       <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
       <asp:BoundField DataField="Version" HeaderText="Version" SortExpression="Version" /> 
       <asp:BoundField DataField="ReleaseDate" HeaderText="ReleaseDate" SortExpression="ReleaseDate" /> 
       <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
      </Columns> 
      <FooterStyle BackColor="#CCCC99" ForeColor="Black" /> 
      <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" /> 
      <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" /> 
      <SortedAscendingCellStyle BackColor="#F7F7F7" /> 
      <SortedAscendingHeaderStyle BackColor="#4B4B4B" /> 
      <SortedDescendingCellStyle BackColor="#E5E5E5" /> 
      <SortedDescendingHeaderStyle BackColor="#242121" /> 
     </asp:GridView> 
     <br /> 
     <asp:Label ID="lblUpdate" runat="server"></asp:Label> 
     <br /> 
     <br /> 
     <table class="auto-style1"> 
      <tr> 
       <td class="auto-style2"> 
        <asp:Label ID="lblProdNum" runat="server" Text="Product Code:"></asp:Label> 
       </td> 
       <td class="auto-style3"> 
        <asp:TextBox ID="txtProdNum" runat="server"></asp:TextBox> 
       </td> 
       <td> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtProdNum" Display="Dynamic" ErrorMessage="**Product code is a required field." ForeColor="Red"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      <tr> 
       <td class="auto-style2"> 
        <asp:Label ID="lblName" runat="server" Text="Name:"></asp:Label> 
       </td> 
       <td class="auto-style3"> 
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
       </td> 
       <td> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtName" Display="Dynamic" ErrorMessage="**Name is a required field." ForeColor="Red"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      <tr> 
       <td class="auto-style2"> 
        <asp:Label ID="lblVersion" runat="server" Text="Version:"></asp:Label> 
       </td> 
       <td class="auto-style3"> 
        <asp:TextBox ID="txtVersion" runat="server"></asp:TextBox> 
       </td> 
       <td> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtVersion" Display="Dynamic" ErrorMessage="**Version is a required field." ForeColor="Red"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      <tr> 
       <td class="auto-style2"> 
        <asp:Label ID="lblReleaseDate" runat="server" Text="Release Date:"></asp:Label> 
       </td> 
       <td class="auto-style3"> 
        <asp:TextBox ID="txtReleaseDate" runat="server"></asp:TextBox> 
       </td> 
       <td> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtReleaseDate" Display="Dynamic" ErrorMessage="**Release date is a required field." ForeColor="Red"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      <tr> 
       <td class="auto-style2">&nbsp;</td> 
       <td class="auto-style3">&nbsp;</td> 
       <td>&nbsp;</td> 
      </tr> 
      <tr> 
       <td class="auto-style2"> 
        <asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" Text="Add Product" /> 
       </td> 
       <td class="auto-style3"> 
        <asp:Label ID="lblErrorMessage" runat="server"></asp:Label> 
       </td> 
       <td> 
        &nbsp;</td> 
      </tr> 
     </table> 
    </form> 
</body> 
</html> 

Antwort

1

Verwenden CausesValidation es zu verhindern, dass der Validierer ausgeführt wird:

<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" CausesValidation="False" /> 
Verwandte Themen