заполнить выпадающий список из списка объектов - PullRequest
2 голосов
/ 20 декабря 2010

В попытке создать приложение 3-уровневой архитектуры c # asp.net я начал создавать класс, который является базой данных, которая используется для подключения к базе данных, другой класс, который является City, у которого есть метод для каждогостолбец в таблице city и класс Cities, в котором у меня есть метод GetCities, который создает список объектов City и затем использует мастер DataSource, чтобы установить элемент управления для использования данных из GetCities ().Все, что я получаю, это бланки в выпадающем списке.Есть идеи почему?

        public List<City> GetCities()
    {
        List<City> cities = new List<City>();
        Database db = new Database();
        SqlConnection conn = db.GetConnection();
        String sql = "SELECT * FROM CITIES";
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            City c = new City(reader.GetInt32(0), reader.GetString(1).ToString());
            cities.Add(c);
        }

        db.CloseConnection();
        return cities;
    }

спасибо

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Вы установили свойства DataTextField, DataValueField и вызвали DataBind?


В этот момент я постараюсь максимально упростить концепцию, а затем начать добавлять вещи обратно, пока вы не обнаружите проблему. Начните с новой страницы, добавьте DropDownList, но не трогайте источник данных и не изменяйте какие-либо свойства, перейдите непосредственно в код и добавьте его в Page_Load:

DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Name";
DropDownList1.DataSource = new[] {
    new { ID = 1, Name = "Alice" },
    new { ID = 2, Name = "Mike" },
    new { ID = 3, Name = "John" }
};
DropDownList1.DataBind();

Это работает? Это для меня. Затем попробуйте изменить DataValueField, DataTextField и DataSource для работы с вашим списком клиентов. Это сломано сейчас? Тогда вы знаете, что проблема где-то в списке клиентов, а не в способе привязки данных.

2 голосов
/ 20 декабря 2010

Вы вызывали метод DataBind () для объекта, который хотите заполнить?

0 голосов
/ 21 декабря 2010

Проблема заключалась в классе City, который после тщательного изучения показал, что конструктор неправильно назначает полученный параметр. Это сейчас работает. Спасибо!

public class City
{
    int id;
    string name;

    public City(int id, string name)
    {
        this.id = id;
        this.name = name;

    }

    public int Id
    {
        get { return id; }
        set { id = value; }
    }
    public String Name
    {
        get { return name; }
        set { name = value; }
    }

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