2012-04-30 2 views
1

Я не уверен, почему это не работает. Я пытаюсь отобразить 2 столбца из моей базы данных бок о бок в окне списка в моей форме. Когда я использую это, он не отображает ни одну из данных правильно.Показать несколько столбцов из базы данных в ListView

("SELECT Person FROM tblPeople" + " SELECT Occur FROM tblpeople" , conn); 

try 
{ 
    SqlDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read()) 
    { 
     listView1.Items.Add(reader["People"].ToString()); 
     listView1.Items.Add(reader["Occur"].ToString()); 
    } 

Так я ищу мои данные, чтобы отобразить так:

John 3 
    James 4 
    Frank 1 

Как имена приходят из столбцов Люди и цифры приходят из колонки Произойти.

+1

Почему вы не просто поставить 'ВЫБЕРИТЕ человека, происходят ОТ tblpeople'? – MarioDS

+0

Хороший совет! Я поменяю его на это, но на самом деле я не отвечаю на то, что я спросил. – user1353517

+0

Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/473148/c-sharp-listview-how-do-i-add-items-to-columns-2-3-and-4- и т.д). – MarioDS

ответ

4

Чтобы получить желаемый эффект, вы должны установить стиль вид на Details и добавить второе значение столбца в качестве подпункта ,

В принципе, вы должны сделать что-то вроде этого:

listView1.View = View.Details; 

    listView1.Columns.Add("People"); 
    listView1.Columns.Add("Occur"); 

    while (reader.Read()) 
    { 
     var item = new ListViewItem(); 
     item.Text = reader["People"].ToString();  // 1st column text 
     item.SubItems.Add(reader["Occur"].ToString()); // 2nd column text 
     listView1.Items.Add(item); 
    } 
+0

Удивительный, отлично работает и отлично выглядит! Спасибо – user1353517

+0

@ user1353517: Хорошо. Однако, если вы хотите отображать таблицы, вы также можете взглянуть на DataGridView;) – digEmAll

0

Метод Добавить() добавляет каждый раз, когда новый элемент коллекции. Если ваш элемент состоит из значений из двух объектов, возможно, самым простым способом было бы создать новый элемент для его инкапсуляции, чтобы вы могли легко привязать его к вашим элементам управления.

Рассмотрим что-то вроде этого:

public class MyNewObject 
{ 
    public string People { get;set; } 
    public string Occur { get;set; } 

    public MyNewObject(string p, string o) 
    { 
     People = p; 
     Occur = o; 
    } 
} 

, а затем просто

while (reader.Read()) 
{ 
    listView1.Items.Add(new MyNewObject(reader["People"].ToString(),reader["Occur"].ToString())); 
} 
Смежные вопросы