C #: метод RowUpdating, не вызываемый при нажатии кнопки «Обновить» в gridView - PullRequest
2 голосов
/ 05 мая 2011

У меня есть gridView, в котором есть кнопки редактирования, удаления, обновления и отмены для выполнения соответствующих функций.

Команды редактирования, удаления и отмены работают нормально.

Но проблема в том, что событие RowUpdating не запускается, когда я нажимаю кнопку Обновить ссылку на gridView.

Что может быть не так?

Вот мой код:

<asp:GridView ID="gvCompanies" runat="server" AutoGenerateColumns="False" AllowPaging="True" 
            onpageindexchanging="gvCompanies_PageIndexChanging" 
            onrowediting="gvCompanies_RowEditing" PageSize="20" 
            onrowcancelingedit="gvCompanies_RowCancelingEdit" 
            onrowdeleting="gvCompanies_RowDeleting" 
            onrowupdating="gvCompanies_RowUpdating" >
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID" ReadOnly="True" />
                <asp:BoundField DataField="name" ItemStyle-Width="200px" 
                    ItemStyle-HorizontalAlign="Left" HeaderText="Name" >
               <ItemStyle HorizontalAlign="Left" Width="200px"></ItemStyle>
                </asp:BoundField>
                <asp:BoundField DataField="address" HeaderText="Address">
                    <ItemStyle HorizontalAlign="Left" Width="200px" />
                </asp:BoundField>
                <asp:BoundField DataField="city" ItemStyle-Width="200px" 
                    ItemStyle-HorizontalAlign="Left" HeaderText="City" >
                 <ItemStyle HorizontalAlign="Left" Width="200px"></ItemStyle>
                </asp:BoundField>
                <asp:BoundField DataField="state" ItemStyle-Width="200px" 
                    ItemStyle-HorizontalAlign="Left" HeaderText="State" >
                    <ItemStyle HorizontalAlign="Left" Width="200px" />
                </asp:BoundField>
                <asp:BoundField DataField="zipcode" HeaderText="Zip Code" />
                <asp:BoundField DataField="telephone" HeaderText="Telephone" />
                <asp:BoundField DataField="fax" HeaderText="Fax" />
                <asp:BoundField DataField="mobile" HeaderText="Mobile" />
                <asp:BoundField DataField="website" HeaderText="Website" />
                <asp:BoundField DataField="email" HeaderText="Email" />
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            </Columns>
        </asp:GridView>

В файле .cs Мое событие RowUpdating показано ниже

    protected void gvCompanies_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //My Code for Update
    }

ПРИМЕЧАНИЕ: Я проверил все подобные вопросы на Stackoverflow, но, похоже, ни один из них не работает для меня. Итак, я разместил этот вопрос

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

Получил ответ.

Спасибо тем, кто пытался мне помочь с этим.

Пришлось изменить CausesValidation свойство моей commandButton на false.

Надеюсь, это поможет всем.

0 голосов
/ 05 мая 2011

Редактировать

Попробуйте заменить:

<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />

С:

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton CommandArgument="" CommandName="Edit" runat="server" Text="Edit"/>
    </ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="False" ShowDeleteButton="true" />

ADD OnRowCommand = "GridView1_RowCommand1" к вашей сетке данных:

<asp:GridView ID="gvCompanies" runat="server" AutoGenerateColumns="False" AllowPaging="True"
        OnPageIndexChanging="gvCompanies_PageIndexChanging" OnRowEditing="gvCompanies_RowEditing"
        PageSize="20" OnRowCancelingEdit="gvCompanies_RowCancelingEdit" OnRowDeleting="gvCompanies_RowDeleting"
        OnRowUpdating="gvCompanies_RowUpdating"
        OnRowCommand="GridView1_RowCommand1">
        <Columns>
            <asp:BoundField DataField="id" HeaderText="ID" ReadOnly="True" />
            <asp:BoundField DataField="name" ItemStyle-Width="200px" ItemStyle-HorizontalAlign="Left"
                HeaderText="Name">
                <ItemStyle HorizontalAlign="Left" Width="200px"></ItemStyle>
            </asp:BoundField>
            <asp:BoundField DataField="address" HeaderText="Address">
                <ItemStyle HorizontalAlign="Left" Width="200px" />
            </asp:BoundField>
            <asp:BoundField DataField="city" ItemStyle-Width="200px" ItemStyle-HorizontalAlign="Left"
                HeaderText="City">
                <ItemStyle HorizontalAlign="Left" Width="200px"></ItemStyle>
            </asp:BoundField>
            <asp:BoundField DataField="state" ItemStyle-Width="200px" ItemStyle-HorizontalAlign="Left"
                HeaderText="State">
                <ItemStyle HorizontalAlign="Left" Width="200px" />
            </asp:BoundField>
            <asp:BoundField DataField="zipcode" HeaderText="Zip Code" />
            <asp:BoundField DataField="telephone" HeaderText="Telephone" />
            <asp:BoundField DataField="fax" HeaderText="Fax" />
            <asp:BoundField DataField="mobile" HeaderText="Mobile" />
            <asp:BoundField DataField="website" HeaderText="Website" />
            <asp:BoundField DataField="email" HeaderText="Email" />
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
        </Columns>
</asp:GridView>

, а затем добавить ниже:

protected void GridView1_RowCommand1(object sender, GridViewCommandEventArgs e)
{
        string command = e.CommandName; //use this to get the button that was pressed i.e. edit/delete
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...