Нет перегрузки для ‘GridView_RowUpdating’ соответствует делегату ‘System.Web.UI.WebControls.GridViewUpdateEventHandler’

#asp.net #entity-framework

#asp.net #entity-framework

Вопрос:

У меня есть gridview, определенный на странице aspx, как определено ниже: я определил обработчик событий в codbehinb со следующей подписью:

 protected void ApplicantGridView_RowUpdating(object sender, GridViewUpdatedEventArgs e)
{
    e.NewValues["fk_WorkerID"] = workersDropDownList.SelectedValue;
}
  

Я могу успешно создать веб-проект, когда я открываю страницу в браузере, я получаю вышеуказанную ошибку.

 <asp:GridView ID="ApplicantGridView" runat="server" AutoGenerateColumns="False" 
DataSourceID="ApplicantsObjectDataSource" DataKeyNames="ApplicantID"
OnRowUpdating="ApplicantGridView_RowUpdating" >
    <Columns>
        <asp:CommandField ShowEditButton="true" ShowDeleteButton="true" ItemStyle-VerticalAlign="Top">
            <ItemStyle VerticalAlign="Top"></ItemStyle>
        </asp:CommandField>
        <asp:DynamicField DataField="CaseName" HeaderText="Case Name" SortExpression="CaseName"
            ItemStyle-VerticalAlign="Top">
            <ItemStyle VerticalAlign="Top"></ItemStyle>
        </asp:DynamicField>
        <asp:DynamicField DataField="CaseNumber" HeaderText="Case Number" SortExpression="CaseNumber"
            ItemStyle-VerticalAlign="Top">
            <ItemStyle VerticalAlign="Top"></ItemStyle>
        </asp:DynamicField>
        <asp:DynamicField DataField="ApplicationDate" HeaderText="Application Date" SortExpression="ApplicationDate"
            ItemStyle-VerticalAlign="Top">
            <ItemStyle VerticalAlign="Top"></ItemStyle>
        </asp:DynamicField>
        <asp:TemplateField HeaderText="Worker" SortExpression="FS_Worker.WorkerName">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("FSWorker.WorkerName") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:ObjectDataSource ID="FSWorkersObjectDataSource" runat="server"
                    TypeName="DSS_OTDA_FS.DAL.SCDSS_ApplicationRepository"
                    DataObjectTypeName="DSS_OTDA_FS.DAL.FSWorker"
                    SelectMethod="GetFSWorkerNames" >
                </asp:ObjectDataSource>
                <asp:DropDownList ID="FSWorkerDropDownList" runat="server"
                    DataSourceID="FSWorkerObjectDataSource"
                    SelectedValue='<%# Eval("WorkerName") %>'
                    DataTextField="WorkerName" DataValueField="WorkerID"
                    OnInit="FSWorkersDropDownList_Init" >
                </asp:DropDownList>    
            </EditItemTemplate>
            <ItemStyle VerticalAlign="Top" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:ValidationSummary ID="ApplicantsValidationSummary" runat="server"
    ShowSummary="true" DisplayMode="BulletList" style="color: Red; width: 40em;" />
  

Это gridview в форме aspx

Комментарии:

1. Пожалуйста, опубликуйте свой полный дизайн формы.

2. Извините, теперь я вижу вашу форму дизайна; позвольте мне обновить свой ответ.

Ответ №1:

Подпись вашего метода неверна, она должна гласить

 protected void ApplicantGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
  

у вас есть GridViewUpdate * d* EventArgs

Ответ №2:

Это очень небольшая разница в типе аргументов события

При обновлении строк используется GridViewUpdateEventArgs

RowUpdated использует GridViewUpdatedEventArgs

Обратите внимание на лишнюю ‘d’