我在C#表單應用程序中有一個表(DataGridView
)。對象列表是binded
。 我可以從選定的行中獲取綁定對象。使用對象不按索引選擇行
但我也希望通過只有列表中的對象以編程方式在表中選擇行。我該怎麼做?
我不想通過Index
(整數值)來選擇。
我在C#表單應用程序中有一個表(DataGridView
)。對象列表是binded
。 我可以從選定的行中獲取綁定對象。使用對象不按索引選擇行
但我也希望通過只有列表中的對象以編程方式在表中選擇行。我該怎麼做?
我不想通過Index
(整數值)來選擇。
如果您BindingSource = BindList<CPatient>
您可以使用此
public class CPatient
{
public int Id { get; set; }
public string IdNo { get; set; }
public string Name { get; set; }
}
Load事件
//Global Variable
BindingList<CPatient> bind = new BindingList<CPatient>();
BindingSource bs = new BindingSource();
private void Form1_Load(object sender, EventArgs e)
{
bind.Add(new CPatient { Id = 1, IdNo = "1235", Name = "test" });
bind.Add(new CPatient { Id = 2, IdNo = "6789", Name = "let" });
bind.Add(new CPatient { Id = 3, IdNo = "1123", Name = "go" });
bind.Add(new CPatient { Id = 4, IdNo = "4444", Name = "why" });
bind.Add(new CPatient { Id = 5, IdNo = "5555", Name = "not" });
bs.DataSource = bind;
dataGridView1.DataSource = bs;
}
Click事件
private void button1_Click_1(object sender, EventArgs e)
{
bs.Position = bs.List.Cast<CPatient>().ToList().FindIndex(c => c.Id == 5);
}
我會嘗試這樣的事情:
var row = dataGrid.Rows
.Cast<DataGridViewRow>()
.FirstOrDefault(r => (CPatient)r.DataBoundItem = myItem);
var rowIndex = row != null ? row.Index : -1;
它應該返回的行索引,如果電網不包含使用該對象綁定一排-1。
如果用戶能夠在運行時重新排序dataGrid,則可以使用row.DisplayIndex
而不是row.Index
。這是因爲DataGridViewBand.Index
有如下評論:
此屬性的值並不一定對應於帶的集合中的 當前可視位置。例如,如果用戶在運行時間 (假設
AllowUserToOrderColumns
屬性設置爲true)重新排列DataGridView
中的列,則每列的Index
屬性的 值不會更改。相反, 列DisplayIndex
值更改。但是,排序行 更改它們的Index
值。
如何你的列表看起來像? – spajce 2013-02-23 15:00:33
@spajce綁定列表 –
maximus
2013-02-23 15:01:34
但爲什麼不基於索引?你可以嘗試第一個答案。 – spajce 2013-02-23 15:14:39