如何将数据从存储过程直接添加到C#中的DataGridView中?

时间:2018-07-29 15:17:22

标签: c# sql-server database

我想知道如何将存储过程返回的数据直接添加到dataGridview中。

我正在用C#创建一个考勤系统,并通过组合框将Class_IdSub_Id发送回存储过程,这样我只能看到某个主题的特定类,但我不知道如何将返回的结果直接添加到dataGridView

Attendance Screenshot

在屏幕截图中,我将发回Class_IdSub_Id,以便它仅向我显示在存储过程中具有这些ID的学生。

我在存储过程中执行了查询,并向我显示了指定了Class_idSub_Id的学生。

Stored procedure

这是代码的屏幕截图

Code Image

2 个答案:

答案 0 :(得分:2)

使用适配器填充DataTable并将DataTable添加到DataSource的{​​{1}}属性中:

DataGridView

如果您的@subid和@classid为DataTable result = new DataTable(); using (SqlConnection conn = new SqlConnection(ConnectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("StoredProcedureName", conn); adapter.SelectCommand.CommandType = CommandType.StoredProcedure; adapter.SelectCommand.Parameters.Add("@subid",SqlDbType.Int).Value= comboBox1.SelectedValue; adapter.SelectedCommand.Parameters.Add("@classid",SqlDbType.Int).Value=comboBox1.SelectedValue; adapter.Fill(result); } dataGridView1.DataSource = result; ,我认为您需要将typeof int的值转换为ComboBox。 您可以尝试使用int甚至更好的Convert.ToInt32(comboBox1.Value)

答案 1 :(得分:0)

这可能对您有帮助。.您可以将我的查询替换为存储过程

    Dim con As SqlConnection = New SqlConnection("server = ADITYA\CBOWR; database = adi; integrated security = true;")
    Dim cmd As SqlCommand = New SqlCommand()
    Dim query As String = "Select * from address"
    cmd.Connection = con
    cmd.CommandType = CommandType.Text
    cmd.CommandText = query
    Dim sda As SqlDataAdapter = New SqlDataAdapter(query, con)
    Dim ds As DataSet = New DataSet()
    con.Open()
    sda.Fill(ds)
    GridView1.DataSource = ds
    GridView1.DataBind()
    con.Close()