0

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

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

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

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

谢谢!

4

2 回答 2

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) } );
    }
}
于 2008-11-18T16:14:27.607 回答
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();
于 2008-11-18T16:56:47.927 回答