DataBind of DropDownList работает, но не отображается в коде позади - PullRequest
0 голосов
/ 17 марта 2011

Я работаю над веб-страницами, для которых определен ASP DropDownList, и при загрузке страницы источник данных привязывается к нему через DataSource.DataBind (). Когда я перебираю код, в раскрывающемся списке ничего в нем не отображается, но когда страница действительно отображается, в списке есть элементы. Когда именно DataBind () применяется к элементу управления?

Проблема в том, что некоторые значения, возвращаемые серверной частью SQL, имеют нулевой текст, поэтому в раскрывающемся списке для этой строки ничего не отображается. Я хочу просто использовать значение в качестве текста, но только если текст равен нулю. И когда я помещаю код в цикл и делаю это сразу после DataBind (), в раскрывающемся списке на тот момент в коде ничего нет.

Спасибо!

Ответы [ 3 ]

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

Лучший вариант для вашего конкретного примера - сделать то, что сказал kd7, и изменить ваш запрос.Однако, если вам когда-либо понадобится внести другие изменения в элементы, вы можете получить к ним доступ в событии DataBound DropDownList. MSDN .Это событие возникает после того, как происходит привязка.

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

Вы можете просто использовать LINQ для данных, прежде чем назначить их для создания нового типа на лету с данными, расположенными так, как вы хотите.Вот краткий пример:

// This simulates the data you get from the DB
List<SomeObject> lstData = new List<SomeObject>();
lstData.Add(new SomeObject() { ID = "1", Text = "One" });
lstData.Add(new SomeObject() { ID = "2", Text = "" });
lstData.Add(new SomeObject() { ID = "3", Text = "Three" });

// This will take your data and create a new version of it substituting the
// ID field into the Text field when the Text is null or empty.
yourDropDownList.DataSource = lstData.Select(i => new {
         ID = i.ID,
         Text = string.IsNullOrEmpty(i.Text) ? i.ID : i.Text }).ToList();

// Then just databind
yourDropDownList.DataBind();

DropDownList будет содержать следующие элементы:

One
2
Three
0 голосов
/ 17 марта 2011

Вы могли бы

a) Изменить запрос к базе данных, исключив нулевые значения

или

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

...