Попытка отобразить все значения строки из набора данных при выборе элемента в списке - PullRequest
1 голос
/ 21 апреля 2019

Я пытаюсь выбрать элемент в списке и просмотреть все данные в соответствующей строке.Хотите знать, что не так с моим кодом сейчас?

Я пытался несколько раз запросить базу данных с конкретным выбранным элементом списка.Тем не менее, он не преобразуется в строку, он просто отображает «System.Data.Datarow», и из-за этого я не могу выполнить запрос успешно.Оригинальный запрос работает, и если поля объектов соответствуют строкам, он показывает правильную фамилию, которую я ищу.Проблема состоит в том, чтобы попытаться затем щелкнуть мышью по любой из нескольких фамилий в списке, и после этого заполнить пустые текстовые поля рядом со списком.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace College_Dorm_Mate_Matching_App
{
    public partial class Preferences : Form 
    {
        public Preferences()
        {
            InitializeComponent();
        }

        //create Student list and instance of student object
        List<Student> newStudent = new List<Student>();
        Student myStudent = new Student();
        SqlConnection con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = D:\CCSU\Spring 19\MIS  312\Final Project\College Dorm Mate Matching App\College Dorm Mate Matching App\Students.mdf; Integrated Security = True");

        //add textbox comobox values to student object
        public void AddItemsToObj()
        {
            myStudent.FirstName = textBoxFirstName.Text;
            myStudent.LastName = textBoxLastName.Text;
            myStudent.Age = int.Parse(textBoxAge.Text);
            myStudent.Sport = comboBoxSport.Text;
            myStudent.Music = comboBoxMusic.Text;
            myStudent.Hobbies = comboBoxHobbies.Text;
            myStudent.Recharge = comboBoxRecharge.Text;
            myStudent.Vices = comboBoxVices.Text;
            myStudent.Weekend = comboBoxWeekends.Text; 
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            AddItemsToObj();

            //query db
            SqlDataAdapter adapter = new SqlDataAdapter("Select * From  Students where FavoriteSport='"+ myStudent.Sport +"' AND Hobbies='"+ myStudent.Hobbies +"' AND MusicTaste='" + myStudent.Music+"'" , con);
            //create new table to store
            DataTable table = new DataTable();
            //fill new DT
            adapter.Fill(table);
            //add sources into listbox if they match
            listBoxMatches.DataSource = table;
            listBoxMatches.DisplayMember = "LastName";
            listBoxMatches.ValueMember = "FirstName";
        }

        private void listBoxMatches_SelectedIndexChanged(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM Students where LastName='" + listBoxMatches.SelectedItem.ToString() + "'";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(dt);
            foreach(DataRow dr in dt.Rows)
            {
                textBoxfnameout.Text = dr["FirstName"].ToString();
                textBoxlnameout.Text = dr["LastName"].ToString();
                textBoxageout.Text = dr["Age"].ToString();
                textBoxsportout.Text = dr["FavoriteSport"].ToString();
                textBoxmusicout.Text = dr["MusicTaste"].ToString();
                textBoxhobbiesout.Text = dr["Hobbies"].ToString();
                textBoxrechargeout.Text = dr["Recharge"].ToString();
                textBoxweekendout.Text = dr["Weekend"].ToString();
                textBoxcigout.Text = dr["cigs"].ToString();
            }
            con.Close();
        }
    }
}

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

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