将存储过程输出参数转储到DataGridView行

时间:2008-11-18 16:04:54

标签: c# sql-server user-interface stored-procedures datagridview

我是c#的长期新手,这个问题可能太明显了,所以如果我“做错了,请原谅。”

使用Visual Studio 2005 Pro,C#,SQL Server 2000 EE SP3。

我有一个存储过程,它接受一个输入参数并返回与该输入有关的几个输出参数。我也成功调用它,String.Format输出到RichTextBox。我想定期调用这个proc,每次都将输出参数保存到DataGridView行,这样结果会随着时间的推移而累积。

  • 将这些参数放入DataGridView的最简单/最优雅的方法是什么?我更喜欢代码而不是一些GUI构建器解决方案。
  • 我是否忽略了一些更好的方法,例如更合适的控制?

谢谢!

2 个答案:

答案 0 :(得分:1)

//set up the datatable
DataTable dt = new DataTable("parms");
dt.Columns.Add("ParmName",typeof(string));
dt.Columns.Add("ParmValue",typeof(string));
//bind to a gui object
myDataGridView.DataSource = dt;

//do this after each sproc call
foreach (SqlParameter parm in cmd.Parameters)
{
    if (parm.Direction == ParameterDirection.Output)
    {
        //do something with parm.Value
        dt.Rows.Add(new object [] { parm.ParameterName, 
            Convert.ToString(parm.Value) } );
    }
}

答案 1 :(得分:0)

史蒂夫的回答让我很接近。我不确定DataGridView是最好的解决方案,但似乎有效。

在Form()中,在InitializeComponent()之后,我把列设置代码(因为我想继续定期添加行):

dgvOutput.Columns.Add("@col1", "Val 1");
dgvOutput.Columns.Add("@col2", "Val 2");
dgvOutput.Columns.Add("@col3", "Val 3");

在按钮处理程序中,在调用存储过程

之后
dgvOutput.Rows.Add(new object[]{
    Convert.ToString(cmd.Parameters["@col1"].Value),
    Convert.ToString(cmd.Parameters["@col2"].Value),
    Convert.ToString(cmd.Parameters["@col3"].Value)
});
dgvOutput.AutoResizeColumns();