Событие Gridview OnRowCreated вызывается несколько раз - выпадающий список заполняется дважды - PullRequest
0 голосов
/ 20 января 2011

Присоединение кода ниже - это простой код, который просто инициализирует выпадающий список (вызывая ddl.Clear ()) и добавляет элемент с текстом «select» со значением «-1».

Filldropdowns (ddl) - это методы, которые получают конкретные данные и вводят их в раскрывающийся метод.Методы по отдельности отлично работают за пределами сетки в обычных выпадающих списках.

Что происходит, если этот обработчик событий вызывается более одного раза для каждой строки сетки.В результате, раскрывающиеся списки содержат двойные значения, которые они должны содержать (полный набор значений просто повторяется).

Кто-нибудь знает, почему это происходит?Отключение appenddatabounditems не вариант, потому что мне нужно, чтобы элементы добавлялись ниже «select».

Странно то, что когда я отлаживаю, даже при повторном вызове для той же строки, он показывает, что выпадающие значения содержат ноль элементов, а затем содержат требуемое количество элементов.Но к тому времени, когда я достигаю обработчика grdAccountsMapping_DataBound (), он показывает удвоенное количество элементов.

public void grdAccountsMapping_RowCreated(object sender, GridViewRowEventArgs e)
{
    GridViewRow row = e.Row;

    if (row.RowType == DataControlRowType.DataRow)
    {
        DropDownList ddlGrdFeeFormat = (DropDownList)row.FindControl("ddlFeeFormat");
        DropDownList ddlGrdTransactionMode = (DropDownList)row.FindControl("ddlTransactionMode");
        DropDownList ddlGrdFeeParticular = (DropDownList)row.FindControl("ddlFeeParticular");
        DropDownList ddlGrdCompany = (DropDownList)row.FindControl("ddlCompany");
        DropDownList ddlGrdAccounts = (DropDownList)row.FindControl("ddlAccounts");
        DropDownList ddlGrdFeeBook = (DropDownList)row.FindControl("ddlFeeBook");

        InitializeDropdown(ddlGrdFeeBook);
        InitializeDropdown(ddlGrdFeeFormat);
        InitializeDropdown(ddlGrdTransactionMode);
        InitializeDropdown(ddlGrdFeeParticular);
        InitializeDropdown(ddlGrdCompany);

        getDDLValues.FillFeeBooks(ddlGrdFeeBook);
        getDDLValues.FillFeeFormats(ddlGrdFeeFormat);
        getDDLValues.FillPaymentModes(ddlGrdTransactionMode);
        getDDLValues.FillFeeParticulars(ddlGrdFeeParticular);
        getDDLValues.FillAccountingCompanies(ddlGrdCompany);
    }
}

Определение сетки страницы aspx выглядит такполучить набор данных для необходимых данных, назначить его источнику данных раскрывающегося списка, а затем связать его с элементом управления dropdownlist.Эти методы отлично работают с выпадающими списками за пределами сетки, и я проверил их на модульном уровне, поэтому я уверен, что проблема не в этом.

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

Мы просто удалили файл и создали его снова, и он, кажется, работает.У меня не так много времени, чтобы копаться в деталях, поскольку мы были в крайнем сроке, но эта странная проблема больше не повторялась!

0 голосов
/ 20 января 2011

Как вы связываете сетку? Вы случайно вызываете DataBind () и / или Rebind () несколько раз?

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