2015-07-03 100 views
0

我做了一個代碼,檢查我的DataGrid中是否已經存在一個特定的元素。 如果元素已經添加到DataGrid中,則該代碼會向用戶顯示一個彈出窗口。這是代碼:如何檢查數據網格中是否已經存在一個元素

if (grid.Items.Count > 0) 
        { 
         for (int i = 0; i < grid.Items.Count; i++) 
         { 

         if (((Teams.Club_Information)grid.Items[i]).name == reader["name"].ToString()) 
         { 
           MessageBox.Show("La squadra è già stata inserita!"); 
          } 
          else 
          { 
           MainWindow.AppWindow.Squadre_DataGrid.Items.Add(new Teams.Club_Information 
           { 
            name = reader["name"].ToString(), 
            code = reader["code"].ToString(), 
            shortName = reader["shortName"].ToString(), 
            squadMarketValue = reader["SquadMarketValue"].ToString() 
           }); 
          } 
         } 
        } 
        else 
        { 
         MainWindow.AppWindow.Squadre_DataGrid.Items.Add(new Teams.Club_Information 
         { 
          name = reader["name"].ToString(), 
          code = reader["code"].ToString(), 
          shortName = reader["shortName"].ToString(), 
          squadMarketValue = reader["SquadMarketValue"].ToString() 
         }); 
        } 

在第一個條件我檢查是否有行的DataGrid中,如果條件爲真,那麼我通過DataGrid的元素進行迭代。 現在的問題是,我比較一個網格項目與屬性「名稱」的讀者。 reader是查詢結果元素的讀取變量(sqlite)。 還有另一種方法來檢查我的DataGrid的列名稱,如果該元素已被添加?

回答

1

您的項目類型爲「Teams.Club_Information」,但您將它們與作爲字符串的reader [「name」]進行比較。除非你寫了一個將Club_Information.name與一個字符串進行比較的Equals方法,否則比較總是失敗。

嘗試,而不是:

if (((Teams.Club_Information)grid.Items[i]).name == reader["name"]) 
+0

我看不到。名稱變量中的條件 –

+0

您需要一種方法來比較你的讀者[「name」]字符串值添加到您的Club_Information對象。您是否考慮過將公開名稱屬性添加到您的Club_Information類中,這會暴露名稱值?看來你目前還沒有辦法將你的俱樂部的名字與你在讀者中獲取的名字進行比較。 – Wibbler

+1

只是將該物品投射到實際類型: 'var item =(Teams.Club_Information)grid.Items [i];如果(item.name == reader [「name」])' – Liero

1

你可以做這樣的事情

 if(grid.Items.Contains(reader["name"])) 
     { 
     MessageBox.Show("team already added"); 
     } 
     else 
     { 
       MainWindow.AppWindow.Squadre_DataGrid.Items.Add(new Teams.Club_Information 
       { 
        name = reader["name"].ToString(), 
        code = reader["code"].ToString(), 
        shortName = reader["shortName"].ToString(), 
        squadMarketValue = reader["SquadMarketValue"].ToString() 
       }); 
     } 
+0

解決方案看起來不錯,但如果我添加相同的值作爲消息出現,然後條件不成立,爲什麼? –

+0

解決方案是錯誤的。讀者[「姓名」]永遠不是項目 – Liero

1
var name = reader["name"]; 
var isNamePresent = grid.Items 
    .Cast<Teams.Club_Information>() 
    .Any(item => item.name == name); 

if (isNamePresent) ... else ... 
+0

姓氏,在紅色下劃線後。用什麼來替換姓?也許結構ClubInformation的變量名稱?或與讀者的名稱參數? –

+0

編譯器說什麼? – Liero

+0

我在我的答案中將'item.Name'更改爲'item.name'。順便說一下,智能感很有幫助 – Liero

相關問題