如何从DataGridViewComboBoxColumn中提取值?

我在datagridview中有一个组合框,该组合框是从DataSet表中填充的,而值成员只是将“ SmashRosterID”返回到作为列名的数据库。如何获得它以实际选择ID值?

这是要添加的列的代码和要填充的ComboBox的数据:

rosterDataAdapter = new SQLiteDataAdapter(
  @"SELECT SmashRosterID,CharacterName FROM SmashRoster",cnn);

rosterNames = new DataSet();

rosterDataAdapter.Fill(rosterNames);

championTest = new DataGridViewComboBoxColumn();
championTest.Name = "ChampionTest";
championTest.DataSource = rosterNames.Tables[0];
championTest.ValueMember = "SmashRosterID"; //doesn't work
championTest.DisplayMember = "CharacterName"; //works
tournamentsGridView.Columns.Add(championTest);

这是我用来写回数据库的更新语句:

allTournamentDataAadapter.UpdateCommand = new SQLiteCommand(
  "UPDATE SmashTournaments SET TournamentName = @TournamentName,Champion = @Champion," +
  "Runnerup = (SELECT R2.SmashRosterID FROM SmashRoster R2 WHERE CharacterName = @Runnerup) WHERE TournamentID = @TournamentID",cnn);

allTournamentDataAadapter.UpdateCommand.Parameters.AddWithValue(
  "@Champion",championTest.ValueMember);

allTournamentDataAadapter.Update(allTournamentData);

其余参数目前都在工作,因此我从代码中省略了它们,以便更轻松地了解问题所在。这是写回数据库的内容:

如何从DataGridViewComboBoxColumn中提取值?

编辑:我现在将参数语句更改为:

allTournamentDataAadapter.UpdateCommand.Parameters.Add(
   "@Champion",DbType.Int64,3,"ChampionTest");

我已将其更改为此,因为我了解到我实际上需要拉CellValue,因为DataGridViewComboBoxColumn的不具有SelectedValue或类似的东西,而是当从ComboBox中选择一个项目时,CellValue随ValueMember一起更改。但是,这仍然行不通。这只是现在不更新该列。 ValueMember可能未正确设置。

我已经尝试过tournamentsGridView.CurrentRow.Cells["ChampionTest"].Value,但我仍然没有运气。请指教。

编辑2:MessageBox.Show(tournamentsGridView.CurrentRow.Cells["ChampionTest"].Value.ToString());确实显示正确的ID。因此正在选择该值。我认为只是写得不好。另外,MessageBox.Show(tournamentsGridView.CurrentRow.Cells["ChampionTest"].ValueType.ToString());表示该值为Int64。

q328849980qqq 回答:如何从DataGridViewComboBoxColumn中提取值?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3133162.html

大家都在问