Grid View Row Команда Событие Пост Назад

1

Я использую элемент управления GridView для загрузки файлов, которые я загружаю, используя RowCommand Event. Мой сценарий похож на этот

  1. Вход пользователя и вход на страницу и загрузка файла
  2. Войдите в систему, введите некоторые данные и сохраните их, появится сообщение, и данные будут показаны в Grid.

Функциональность "Загрузить" отлично работает в сценарии 1, однако ее работа не работает после сценария 2 Это мой код

<asp:GridView ID="GVUsers" runat="server" OnRowDataBound="GVUsers_RowDataBound" OnRowCommand="GVUsers_RowCommand"
    OnRowDeleting="GVUsers_RowDeleting" AutoGenerateColumns="false" CssClass="table">
    <Columns>
            <asp:TemplateField HeaderText="Files" ItemStyle-HorizontalAlign="Left">
                <ItemTemplate>
                    <asp:FileUpload ID="filedoc" runat="server" Width="98%" CssClass="filedoc" />
                    <asp:Button ID="btnuploadfiles" runat="server" CommandName="fileupd" Text="Upload"
                                                            CssClas="uploadbtn" />
                </ItemTemplate>
                 </asp:TemplateField>


    </Columns>
</asp:GridView>

protected void GVUsers_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "fileupd")
    {
            //Upload File
    }
}

и вот как я привязываюсь

if(!Page.IsPostBack)
{
  //Assigning datasource and DataBinding
}

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

Я попытался проверить обработчик событий из кода позади, но та же проблема. Также на кнопке Save я делаю это после сохранения

protected void btnsave_Click(object sender, EventArgs e)
{
 //Assigning datasource and DataBinding
}

как я исследовал, проблема находится в btnsave_click, но если я использую только GVUsers.DataBind() он не покажет вновь добавленные записи в Grid. Я также попытался отключить ViewState из Grid. Я привязываю данные к сетке с помощью DataTable

Как я могу заставить RowCommand работать после отправки сообщения или как я могу восстановить сетку данных после отправки?

Теги:
gridview

3 ответа

0

Иногда, сетка рассматривает событие RowCommand прекращает стрельбу.

Одним из решений, которое вы можете попробовать, является перевязка вашей сетки каждый раз, когда ваши страницы возвращаются назад, т.е. перемещают логику привязки сетки из условия if(!Page.IsPostBack).

Вы увидите, что событие RowCommand теперь будет успешно выполнено. Проблема с этим решением заключается в том, что вы потеряете любые захваты данных в своей сетке, например, данные в текстовых полях в строках. Если у вас нет такой ситуации, это решение безопасно.

0

Почему бы вам не сохранить введенные пользователем данные через ajax-вызов и обновить страницу позже.. это поможет вам избежать обратного вызова

0

вот некоторые изменения, которые вам нужно

когда загрузка страницы в первый раз bind gridview с событием загрузки страницы

if(!Page.IsPostBack)
{
  //Assigning datasource and DataBinding
}

но когда вы снова GVUsers.DataBind() вам нужно снова назначить источник данных с обновленной записью

убедитесь, что ваше представление grid view не в панели обновления beacause, если вы используете панель обновления, вы не можете получить файл с расширением на стороне сервера

Ещё вопросы

Сообщество Overcoder
Наверх
Меню