В моем приложении Windows Forms Я пытаюсь заполнить список со значениями из набора данных, но он просто остается пустым и не дает никаких исключений.Использование набора данных для заполнения списка
Это мой код
private void FormTeams_load(object sender, EventArgs e)
{
try
{
DBTeams = new DBConnection();
conString = Properties.Settings.Default.UserConnectionString;
DBTeams.connection_string = conString;
DBTeams.Sql = Properties.Settings.Default.SQL_Teams;
ds = DBTeams.GetConnection;
MaxRows = ds.Tables[0].Rows.Count;
lsb_TeamsTeams.DataSource = ds;
lsb_TeamsTeams.DisplayMember = "team_name";
lsb_TeamsTeams.ValueMember = "team_ID";
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
имя Listbox является "lsb_TeamsTeams", имя набора данных "DS". Таблица содержит 3 столбца. Я хочу, чтобы в этом ListBox отображались столбец «team_ID» и «team_name».
Хорошо, просто чтобы проверить, будет ли мой запрос отображаться в моей первой форме Form1, я попробовал следующее. Здесь я пытаюсь заполнить второй набор данных своей второй таблицей в базе данных, а затем попытаюсь передать данные в ListBox.
private void Form1_Load(object sender, EventArgs e)
{
try
{
secondForm = new FormTeams();
DBPlayers = new DBConnection();
conString = Properties.Settings.Default.UserConnectionString;
DBPlayers.connection_string = conString;
DBPlayers.Sql = Properties.Settings.Default.SQL_Players;
ds = DBPlayers.GetConnection;
DBPlayers.Sql = Properties.Settings.Default.SQL_Teams;
ds2 = DBPlayer.GetConnection;
lsb_Teams.DisplayMember = "team_name";
lsb_Teams.ValueMember = "team_ID";
lsb_Teams.DataSource = ds2;
MaxRows = ds.Tables[0].Rows.Count;
NavigateRecords();
btn_Save.Enabled = false;
btn_New.Enabled = true;
btn_Cancel.Enabled = false;
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
К сожалению, эта ошибка: Invalid object name 'tbl_Teams'
.
Я не совсем понимаю, почему это поднимет эту ошибку, я попытался найти проблему в Google, но я мог только найти некоторые комментарии об обновлении кеша intellisense. Я попытался найти это в Visual Studio 2015 Enterprise, но не смог.
Здесь используются методы подключения к базе данных.
public System.Data.DataSet GetConnection
{
get { return MyDataSet(); }
}
private System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
da_0 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_0.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
Так при попытке получить доступ к базе данных с помощью SQL Server Management Studio, я узнал, что таблица я создал в Visual Studio, не присутствует в базе данных, которая объясняет, почему я получил ошибку Invalid object name 'table'
Как это может быть ? Я считаю, что это связано с тем, что я создал вторую таблицу через Visual Studio. Как-то это добавило его в проводник сервера Visual Studio, но не в фактическую базу данных. При использовании студии управления SQL мне удалось создать вторую таблицу, и тогда мой запрос на C# будет работать.
Но теперь появилась следующая проблема с заполнением ListBox.
Я не могу отобразить данные в своем ListBox, но я могу отображать данные в DataGridView, но я хотел бы отображать их в ListBox.
Мой код:
private void Form1_Load(object sender, EventArgs e)
{
try
{
secondForm = new FormTeams();
DBPlayers = new DBConnection();
conString = Properties.Settings.Default.UserConnectionString;
DBPlayers.connection_string = conString;
DBPlayers.Sql = Properties.Settings.Default.SQL_Players;
ds = DBPlayers.GetConnection;
DBPlayers.Sql = Properties.Settings.Default.SQL_Teams;
ds2 = DBPlayers.GetConnection;
//The following lines of code diplay: " System.Data.DataViewManagerList Item TypeDescriptor " in the ListBox.
lsb_Teams.DisplayMember = "team_name";
lsb_Teams.ValueMember = "team_ID";
lsb_Teams.DataSource = ds2.Tables[0];
//This works, it displays the data from the table.
dataGridView1.DataSource = ds2.Tables[0];
MaxRows = ds.Tables[0].Rows.Count;
NavigateRecords();
btn_Save.Enabled = false;
btn_New.Enabled = true;
btn_Cancel.Enabled = false;
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
Я попробовал несколько позиций линии .DataSource, но это не помогло. Я также попытался поместить данные из другого набора dataset dataset [0] в ListBox, а затем отображает данные из столбца DisplayMember, но выдает ошибку при запуске приложения cannot bind to the new value member. Parameter name: value
.
Вспомните, что я уже пробовал этот. Остается пустым. Но спасибо. – Dennis1679
Каково значение 'MaxRows', вы уверены, что у вас есть данные в' ds.Tables [0] '? –
MaxRows устанавливается на количество строк в таблице [0]. В этом случае 2. Но это не очень важно, так как я повторно использовал этот код из другой части моего приложения, и сейчас я даже не использую MaxRows (пока). – Dennis1679