0

我是c#的长期新手,这个问题可能太明显了,所以请原谅我是否“做错了”。将存储过程输出参数转储到DataGridView行中

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

我有一个存储过程需要一个输入参数并返回与该输入有关的几个输出参数。我也调用它成功,并将输出格式化为一个RichTextBox。我想定期调用此proc,每次将输出参数粘贴到DataGridView行中,以便随着时间的推移累积结果。

  • 什么是最简单/最优雅的方式来获取这些参数到DataGridView?我更喜欢代码而不是一些GUI构建器解决方案。
  • 我可以忽略一些更好的方法,比如更合适的控制吗?

谢谢!

回答

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) }); 
    } 
} 
+0

谢谢史蒂文。但是,我实际上对事物的GUI方面更感兴趣。即如何将proc输出连接到datagridview,或者更好的控制。 – 2008-11-18 16:16:20

0

史蒂夫的回答让我亲近。我不确定DataGridView是最好的解决方案,但它似乎正在工作。

形式()的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();