代码之家  ›  专栏  ›  技术社区  ›  b w

将存储的proc输出参数转储到DataGridView行中

  •  0
  • b w  · 技术社区  · 16 年前

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

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

    我有一个存储过程,它接受一个输入参数,并返回与该输入相关的几个输出参数。我也成功地调用了它,并将输出格式化为RichTextBox。我想定期调用此过程,每次将输出参数粘贴到DataGridView行中,这样结果就会随着时间的推移而累积。

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

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Steven A. Lowe    16 年前
    //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) } );
        }
    }
    
        2
  •  0
  •   b w    16 年前

    史蒂夫的回答让我很接近。我不确定DataGridView是否是最好的解决方案,但它似乎正在发挥作用。

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

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

    在按钮处理程序中,调用存储的proc后

    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();
    
    推荐文章