2015-10-19 39 views
1

我正在嘗試創建一個應用程序連接到數據庫使用SQL,我試圖創建一個數據視圖,看當前選定的數據視圖,然後從另一個表中拉回信息。我遵循一些指南,並已相當接近,但我目前得到這個錯誤:C#和SQL系統.ArgumentOutOfRangeException

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll Additional information: Index was out of range. Must be non-negative and less than the size of the collection.

任何幫助將不勝感激。 (Visual Studio中顯示錯誤,低於第一線的末端)

string PersonID = Grid1.SelectedRows[0].Cells[0].Value.ToString(); 
sqlDataAdapter2.SelectCommand.CommandText = "select * from Personal_Emails where PersonID=" + PersonID; 
sqlDataAdapter2.Fill(dataSet21.Personal_Emails); 
+1

你有任何選定的行,他們有單元格嗎? –

+1

歡迎來到Stack Overflow!它看起來像「SelectedRows」或「Cells」都有0個元素。 – Fabjan

+0

你期待從Grid1.SelectedRows [0] .Cells [0] .Value.ToString();'? Grid1是否有任何行? –

回答

0

是否檢查SelectedRows & Cells有選擇的價值?您可以使用調試器並查看這些值是什麼。

另外:

您正在定義是PersonID爲字符串。它是數據庫中的字符串值嗎?如果是這樣,你有沒有嘗試過:

sqlDataAdapter2.SelectCommand.CommandText = "SELECT * FROM Personal_Emails WHERE PersonID='" + PersonID + "'"; 
0

你需要檢查是否有東西存在,然後才能使用它。

var selectedRow = Grid1.SelectedRows[0]; 
var cell = selectedRow == null ? false : selectedRow.Cells.Any(); 
var personID = (cell) ? Grid1.SelectedRows[0].Cells[0].Value.ToString() : ""; 

if(!string.isNullOrEmpty(personID) 
    // do query stuff 
0
string PersonID = Grid1.SelectedRows[0].Cells[0].Value.ToString(); 

驗證如果這條線是返回一些值<>空。

示例:如果網格沒有選定的行,它將返回錯誤或空值。