将 nvarchar 值'System.Data.DataRowView'转换为数据类型 int 时转换失败



我正在尝试基于comboBox选择填充DataGridView。我不知道哪里出了问题——请帮帮我。。

这是我的代码:

public void GetTestGroups()
{
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        SqlDataAdapter da = new SqlDataAdapter("select LabTestGroupId,GroupName from tbl_LabTestGroup", con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        cbTestGroup.DataSource = dt;
        cbTestGroup.DisplayMember = "GroupName";
        cbTestGroup.ValueMember = "LabTestGroupId";           
    }
}
private void cbTestGroup_SelectedIndexChanged(object sender, EventArgs e)
{
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        SqlDataAdapter da = new SqlDataAdapter("spGetTestNames", con);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        da.SelectCommand.Parameters.AddWithValue("@LabTestGroupId", cbTestGroup.SelectedValue.ToString());
        DataTable dt = new DataTable();
        da.Fill(dt);// Error in this line.
        dgvLabTests.DataSource = dt;
    }
}

我的存储过程:

create procedure spGetTestNames 
    @LabTestGroupId int
as
begin 
    select TestNames 
    from tbl_LabTests 
    where LabTestGroupId = @LabTestGroupId
end

当存储过程需要int时,您正在将string传递给它。像这样更改设置@LabTestGroupId参数的代码。

da.SelectCommand.Parameters.AddWithValue(
    "@LabTestGroupId", 
    int.Parse(cbTestGroup.SelectedValue.Item["LabTestGroupId"].ToString()));

或者,您需要确定如何将SelectedValue转换为所需的int值。我建议调试并在监视窗口中查看SelectedValue,以确定它到底是什么以及如何获得所需的值。

相关内容

  • 没有找到相关文章

最新更新