Присоединение кода ниже - это простой код, который просто инициализирует выпадающий список (вызывая 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.Эти методы отлично работают с выпадающими списками за пределами сетки, и я проверил их на модульном уровне, поэтому я уверен, что проблема не в этом.