C# 在“中”时无法更新Gridview中的字段;编辑";模式,asp验证程序阻止更新

C# 在“中”时无法更新Gridview中的字段;编辑";模式,asp验证程序阻止更新,c#,asp.net,validation,gridview,customvalidator,C#,Asp.net,Validation,Gridview,Customvalidator,在我最后一年的项目中,我使用了一个GridView,它使用ObjectDataSource来显示数据库数据。 MyObjectDataSource与适当的“选择”、“更新”、“删除”函数链接,这些函数是N层应用程序的一部分 我已经测试了我的所有功能,它们工作得很好 但在GridView的“编辑”模式下,我无法更新字段。。。但是我可以很好地删除行 有什么建议吗 谢谢 更新:问题是我的asp客户端验证程序阻止我以“编辑”模式提交更新的字段。 我已将它们添加到代码中。 部分代码: <form i

在我最后一年的项目中,我使用了一个GridView,它使用ObjectDataSource来显示数据库数据。 MyObjectDataSource与适当的“选择”、“更新”、“删除”函数链接,这些函数是N层应用程序的一部分

我已经测试了我的所有功能,它们工作得很好

但在GridView的“编辑”模式下,我无法更新字段。。。但是我可以很好地删除行

有什么建议吗

谢谢

更新:问题是我的asp客户端验证程序阻止我以“编辑”模式提交更新的字段。 我已将它们添加到代码中。

部分代码:

<form id="form1" runat="server">
<div>        
    <asp:ObjectDataSource ID="BeersObjectDataSource" runat="server" 
        DeleteMethod="DeleteBeer_BLL"
        SelectMethod="RetrieveBeers_BLL" 
        UpdateMethod="UpdateBeer_BLL"
        TypeName="BLL" >
        <DeleteParameters>
            <asp:Parameter Name="id" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="id" Type="Int32" />
            <asp:Parameter Name="name" Type="String" />
            <asp:Parameter Name="country" Type="String" />
            <asp:Parameter Name="logoPath" Type="String" />
        </UpdateParameters>
    </asp:ObjectDataSource>        
</div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" 
    DataSourceID="BeersObjectDataSource" PageSize="7" 
    onrowdeleted="GridView1_RowDeleted" onrowupdated="GridView1_RowUpdated" DataKeyNames="id">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
        <asp:BoundField DataField="id" HeaderText="ID"  
            ReadOnly="True" SortExpression="id" />
        <asp:BoundField DataField="name" HeaderText="Beer Name" SortExpression="name" />
        <asp:BoundField DataField="country" HeaderText="Beer Country" 
            SortExpression="country" />
        <asp:BoundField DataField="logoPath" HeaderText="Image Path"
            SortExpression="logoPath" ReadOnly="True" />
        <asp:ImageField DataImageUrlField="logoPath" DataImageUrlFormatString="~/{0}" 
                HeaderText="Logo Preview" NullDisplayText="No image" 
                NullImageUrl="~/images/logobeers/no-photo.jpg" 
                SortExpression="logoPath" ReadOnly="True">
                <ControlStyle Height="100px" Width="100px" />
        </asp:ImageField>
    </Columns>
</asp:GridView>
<br />
<br />
<asp:TextBox ID="TextBoxBeerName" runat="server">Beer Name</asp:TextBox>
&nbsp;&nbsp;<asp:CustomValidator ID="CustomValidator1" runat="server" 
    ControlToValidate="TextBoxBeerName" Display="Dynamic" 
    ErrorMessage="*" 
    onservervalidate="CustomValidator1_ServerValidate" SetFocusOnError="True" 
    ForeColor="Red"></asp:CustomValidator>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:TextBox ID="TextBoxBeerCountry" runat="server">Beer Country</asp:TextBox>
&nbsp;&nbsp;<asp:CustomValidator ID="CustomValidator2" runat="server" 
    ControlToValidate="TextBoxBeerCountry" Display="Dynamic" 
    ErrorMessage="*" 
    onservervalidate="CustomValidator2_ServerValidate" SetFocusOnError="True" 
    ForeColor="Red"></asp:CustomValidator>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:FileUpload ID="FileUpload1" runat="server" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID="Button1" runat="server" Text="Upload to DataBase" 
    onclick="Button1_Click" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="uploadStatusLabel" runat="server" Enabled="false"></asp:Label>
</form>
这个答案对我有帮助:

我已经建立了一个验证组

将属性
ValidationGroup=“AddBeerValidationGroup”
添加到每个CustomValidator

部分修改代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{

}
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    GridView1.DataBind();
}
protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
    GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
    if (IsValid == true)
    {    /* SOME CODE ..... */    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Page.Validate("AddBeerValidationGroup");

    if (Page.IsValid == true)
    {  /* SOME CODE ..... */    }
}

检查你的
updateber\u BLL
方法。@afzalugh我已经仔细检查了我的方法,问题不是来自它,而是来自验证程序(参见我编辑的帖子)。谢谢!