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();