1
我有一個List<ColumnList>
ColumnListLists,它有一個綁定源(bsLists)附加到它。 ColumnList
在裏面有一個List<Column>
。我有一個綁定源綁定到當前的bsLists指向該內部列表。排序數據綁定對象中的列表的問題
困惑了嗎?這裏有一些可能有用的代碼。
public class ColumnList
{
...
public string Name { get; set;}
public List<Column> ListOfColumns { get; set;}
}
public class Column
{
...
public string HeaderName { get; set; }
}
public class CustContractsSetup
{
public CustContractsSetup()
{
InitializeComponent();
bsLists = new BindingSource(Properties.Settings.Default.ColumnListLists, null);
cmbListName.DataSource = bsLists;
cmbListName.DisplayMember = "Name";
bsColumns = new BindingSource(bsLists, "ListOfColumns");
lbCurrent.DataSource = bsColumns;
lbCurrent.DisplayMember = "HeaderName";
}
BindingSource bsLists;
BindingSource bsColumns;
ListBox lbCurrent;
}
現在我想要做的是改變兩個Column
的順序。
private void btnUp_Click(object sender, EventArgs e)
{
if (lbCurrent.SelectedIndex <= 0 || lbCurrent.SelectedIndex > bsColumns.Count)
return;
System.Diagnostics.Debug.Print("before:");
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex - 2].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex - 1].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex + 1].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex + 2].HeaderName);
((ColumnList)bsLists.Current).ListOfColumns.Reverse(lbCurrent.SelectedIndex - 1, 1);
Debug.Print("after:");
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex - 2].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex - 1].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex + 1].HeaderName);
Debug.Print(((ColumnList)bsLists.Current).ListOfColumns[lbCurrent.SelectedIndex + 2].HeaderName);
bsLists.ResetCurrentItem();
}
這是輸出我得到
before:
Conversion Level
Conversion Programmer
Edge Required
Education Required
Target Month
after:
Conversion Level
Conversion Programmer
Edge Required
Education Required
Target Month
如果事情的來龍去脈,他們應該邊緣所需應轉換程序員已經交換。但正如你所看到的,前後列表完全一樣。
我犯了什麼樣的錯誤,是讓我的列表不會改變順序?
我知道這是某種愚蠢的錯誤。 – 2010-08-24 20:27:17