我正在由LINQ查詢填充的組合框如何發現:)沒事的時候在ComboBox中選定
var locations =
from loc in db.LOCATIONs
.Where(a => a.Omit == false)
select new
{
LocationID = loc.LocationID,
Location = loc.Location1
};
cbo = this.cboAdminLocation;
cbo.DataSource = locations;
cbo.DisplayMember = "Location";
cbo.ValueMember = "LocationID";
cbo.SelectedIndex = -1;
我也有例行DisplayAccounts(其中列出了一個DataGridView所有帳戶,但過濾按組合中選擇的值選擇,否則顯示所有賬戶。我想這將是非常簡單的,我試圖用DisplayAccounts內的下列語句()來處理它:
if (this.cboAdminLocation.SelectedIndex > -1)
filterAdminLocation = Convert.ToInt32(this.cboAdminLocation.SelectedValue.ToString());
else
filterAdminLocation = 0;
,並在LINQ查詢的末尾:
if (filterAdminLocation > 0)
{
accountData = accountData.Where(a => a.LocationID == filterAdminLocation);
}
不過,我在「輸入字符串的格式不正確」的第一個循環中(即,在有機會從Combo中選擇一個值之前)出現錯誤,並且實際上在該階段的組合值顯示爲{ LocationID = 1, Location = "Brentwood" }
和所選的索引是0.如果我跳過這一步,並測試當我選擇了一個值,它會返回一個整數值,如預期的那樣。
因此,我的問題是,爲什麼讓過去的if (this.cboAdminLocation.SelectedIndex > -1)
測試時,所選擇的指標是所謂0,多以爲什麼選擇指數0時,我明確地將其設爲-1填充控制時的點?
我很欣賞這可能非常簡單,但對於C#我相當陌生,所以你不得不原諒我的愚蠢!
我通常curcumvent問題初始化集合我綁定到一個虛擬物品,代表「沒有被選中」的組合框。然後,我追加我的物品,並綁定它。工作順利,而不必刪除選擇了。 – Alex