Редактировать портя после Gridview_Sorting - PullRequest
0 голосов
/ 17 апреля 2009

У меня есть веб-приложение (ASP.NET 2.0 C #), и на одной из страниц у меня есть Gridview. Gridview имеет 3 столбца (Редактировать, ID, Имя), и сортировка включена. Редактирование не работает обычным способом: он использует идентификатор и добавляет его к QueryString, и пользователь попадает на страницу редактирования. Примерно так:

protected void Grid_RowEditing(object sender, GridViewEditEventArgs e)
{
   string editID = Grid.DataKeys[e.NewEditIndex].Value.ToString();  
   Response.Redirect("~/Admin/Edit_Page.aspx?EditID=" +
                     HttpUtility.HtmlDecode(editID));
}

Когда страница загружается, сетка все равно не сортируется. Если я нажимаю изменить, он работает нормально. Но если я щелкну Редактировать ПОСЛЕ сортировки, перед передачей будет передан идентификатор строки, которая была изначально там, вместо той, которая существует в настоящее время.

Почему это происходит? Есть идеи?

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 апреля 2009

Связываете ли вы свой набор данных?

0 голосов
/ 17 апреля 2009

Если хотите сохранить работоспособность, возможно, есть и другое возможное решение. Если вы используете кнопки для редактирования и пользователь CommandName кнопки для «редактирования» и CommandArgument в качестве идентификатора редактируемой сущности, то это может работать Я даю вам код ниже.

Код:

protected void Grid_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Edit")
    {
        int intEditId = Convert.ToInt32(e.CommandArgument);
        Response.Redirect("~/Admin/Edit_Page.aspx?EditID=" + intEditId);

    }
 }

файл aspx:

в сетке:

<asp:TemplateField>
   <ItemTemplate><asp:ImageButton CommandName="Edit"
   CommandArgument='<%# Eval("EditID") %>' runat="server" ID="lnkEdit" ImageUrl="../images/edit.gif" ToolTip="View/Edit"></asp:ImageButton></ItemTemplate></asp:TemplateField>

Надеюсь, это поможет. Анинда

0 голосов
/ 17 апреля 2009

При загрузке страницы попробуйте привязать сетку, когда страница не отправлена ​​обратно. Я имею в виду следующий код в загрузке страницы:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
        PopulateGrid();
}

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

...