Отключить SortExpression для определенного столбца в динамически создаваемом GridView - PullRequest
1 голос
/ 14 марта 2012

У меня есть gridView table (using ASP.NET 3.5), который заполняется с помощью объекта SqlDataSource (из моей базы данных SQL), который динамически меняется от другой команды SELECT в соответствии с различными правилами авторизации (извлекается больше / меньше информации).

В GridView я установил AllowSorting=true, и он отлично работает.

моя проблема: Я хочу disable Sorting для определенных столбцов (например, фото), и я понимаю, что этосделано путем установки:

myGrid.Columns[i].SortExpression = "";

Только когда я пытаюсь получить доступ к этому конкретному столбцу, я получаю сообщение об ошибке: `Индекс выходит за границы (столбец еще не существует!).

Я попытался подключиться к следующим событиям:

  • RowDataBound
  • RowataBinding

, но все равно этого не произошлоРабота.Как я могу получить доступ к определенному столбцу (после его динамического создания) и отключить его сортировку?

Вот фрагмент:

ASPX Page:

<asp:GridView ID="gridNew" runat="server" AllowPaging="True" 
    AllowSorting="True" EnableModelValidation="True">

.CS Page:

protected void btnSend_Click(object sender, EventArgs e)
    {
        gridNew.DataSourceID = "Employees_DataSource";
        switch (ddlSelection.SelectedValue)
        {
            case "Admin":
                Employees_DataSource.SelectCommand = @"SELECT * FROM [Employees]";
                gridNew.AutoGenerateDeleteButton = true;
                gridNew.AutoGenerateEditButton = true;
                gridNew.DataBind();
                //gridNew.Columns[1].SortExpression = "";
                // This is not working!! :(
                break;

            case "Manager": ...

            default:
                break;
        }

Спасибо!:) Мицы.

Ответы [ 2 ]

2 голосов
/ 28 мая 2015

Вы можете отключить сортировку по любому столбцу (включая динамический), отключив ячейку в событии GridView DataBound. Это даст желаемый результат отключения заголовка столбца от появления в виде кнопки.

protected void yourgrid_DataBound(object sender, EventArgs e)
{
    yourgrid.HeaderRow.Cells[4].Enabled = false;
    yourgrid.HeaderRow.Cells[5].Enabled = false;
}
1 голос
/ 14 марта 2012

Вы должны обработать событие GridView.Sorting.GridViewSortingEventArgs.SortExpression доступен для записи.

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    // replace with your logic
    String newOrder = "Column1";
    e.SortExpression = newOrder;
    e.SortDirection = "DESC";
}

Редактировать : если вы просто хотите отключить сортировку для определенного столбца в событии, обычно это должно работать дляустановите GridViewColumn SortExpression на null:

GridView1.Columns[0].SortExpression = null;

Однако вы используете SqlDataSource (с которым я не знаком и лично избегаю) и вы создали GridView динамически.RowCollection GridView также пуст?Вы воссоздаете свои динамические GridView (ы) на каждой обратной передаче с тем же идентификатором, что и раньше в Page_Load, самое позднее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...