Я пытаюсь выбрать элемент в списке и просмотреть все данные в соответствующей строке.Хотите знать, что не так с моим кодом сейчас?
Я пытался несколько раз запросить базу данных с конкретным выбранным элементом списка.Тем не менее, он не преобразуется в строку, он просто отображает «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();
}
}
}
Я хотел бы получить текстовые поля, кромесписок для заполнения соответствующими данными выбранного элемента.