我有一個DataGridView允許用戶同時在多行中設置一個值,方法是首先選擇幾行並從上下文菜單中選擇一個值。通過遍歷所有選定的行,將每行的適當列設置爲指定的值,從而實現這一目標。如果DataGridView沒有按照被修改的列進行排序,那麼效果很好,但如果試圖修改排序列中的值,則經常會有一些值沒有被更改。在DataGridView中編輯排序列值
所以,如果我有一個像由第三列以下排序表:
x x T* x
x x T* x
x x T* x
x x F x
x x F x
你想設置在第三列的所有值設爲「F」,你應該能夠選擇前三行,並設置第三列的值設置爲「F」,但我認爲情況是,作爲在選定行中的程序重複他們改變順序,你經常結了:
x x T* x
x x F* x
x x F* x
x x F x
x x F x
什麼,我認爲是發生的是「SelectedRow」列表是由索引定義的,如果行是在遍歷「SelectedRows」時重新排列,這會導致某些行將其值設置爲兩次,而其他行則根本沒有設置它們的值。是否有可能暫停重新排序,直到迭代完成,還是有另一種方法確保每個選定的行只修改一次?
編輯:順便說一句,將列「SortMode」設置爲「NotSortable」似乎沒有幫助。
如:
DataGridViewColumnSortMode temp = dgv[currenttab].Columns["column"].SortMode;
dgv[currenttab].Columns["column"].SortMode = AataGridViewColumnSortMode.NotSortable;
foreach (DataGridViewRow row in dgv[currenttab].SelectedRows) {
row.Cells["column"].Value = "F";
}
dgv[currenttab].Columns["colour"].SortMode = temp;
繁瑣,因爲它是它仍然有同樣的問題。
我沒有試過,但我看不到它的工作。 我認爲問題在於,當您更改'排序依據'列的值時,行最終會更改其'索引'。所以,當你改變行'1'的值時,它變成了行'4'(這樣它最終在列表中第二次寫入),並且不同的(未修改的)行被壓入索引1,這就是行最終滑落。 然而,我會給它一個去,如果它能工作,將會驚喜!) – Slartibartfast
好吧,只是試過它,唉,不,如果有什麼更糟糕的:哭 - 傷心: – Slartibartfast