C# 无法强制转换类型为';System.String';到

C# 无法强制转换类型为';System.String';到,c#,asp.net,C#,Asp.net,当我运行它并在组合框中选择一个值时,我收到以下错误: 无法将“System.String”类型的对象强制转换为 “System.Data.DataRowView” 这是我的代码: private void cmbGroupname_SelectedIndexChanged(object sender, EventArgs e) { var db = new LinqtosqlDataContext(); var group = db.TblQuestions; var q

当我运行它并在组合框中选择一个值时,我收到以下错误:

无法将“System.String”类型的对象强制转换为 “System.Data.DataRowView”

这是我的代码:

private void cmbGroupname_SelectedIndexChanged(object sender, EventArgs e)
{
    var db = new LinqtosqlDataContext();
    var group = db.TblQuestions;
    var q = db.SelectAllQuestionByGroupId(Convert.ToInt32(((DataRowView)cmbGroupname.SelectedItem)["GroupID"]));
}

如何修复它?

错误很明显,您正在尝试将
cmbGroupname强制转换。请选择EdItem,一个字符串,将其转换为DataRowView。那么:

var q = db.SelectAllQuestionByGroupId(Convert.ToInt32(cmbGroupname.SelectedValue));

这是因为组合框的SelectedItem是一个字符串。显然,您无法将其转换为
DataRowView
。这里是您得到错误的地方:
(DataRowView)cmbGroupname。SelectedItem
。此代码错误。事实上,我想在combobox中选择“GroupID”。我的combobox包含字符串值“GroupName”。使用以下代码,我在combobox中收到了“GroupName”和“GroupID”,现在我只想选择“GroupID”.public void Frmquestion_Load(对象发送方,事件参数e){var db=new LinqtosqlDataContext();var group=db.TblGroups;foreach(组中的var t){cmbGroupname.Items.Add(t.GroupName);cmbGroupname.ValueMember=Convert.ToString(t.GroupID);} }