การเลือกแถวใน DataGridView โดยทางโปรแกรม


คำตอบ:


128

ไม่ได้ทดสอบ แต่ฉันคิดว่าคุณสามารถทำสิ่งต่อไปนี้ได้:

dataGrid.Rows[index].Selected = true;

หรือคุณสามารถทำสิ่งต่อไปนี้ (แต่อีกครั้ง: ไม่ได้ทดสอบ):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

ระวังถ้า DataGridView ของคุณเป็นread-onlyแล้วSelectedRows.Clear()จะไม่ทำงาน
Derek W

14
แทน SelectedRows.Clear () ใช้เมธอด ClearSelection () ของอินสแตนซ์ datagridview
Furkan

1
@Furkan: นั่นไม่ได้ทำแบบเดียวกัน ด้วยSelectedRows.Clear()การล้างเฉพาะแถวที่เลือก แต่ClearSelection()คอลัมน์ => การเลือกคอลัมน์ก็หายไปด้วย ...
Christoph Fink

17
เพิ่มรหัสหนึ่งบรรทัดdataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: เหตุการณ์ SelectionChanged ดูเหมือนจะไม่ถูกทริกเกอร์เมื่อทดสอบคำแนะนำของคุณ
user2430797

34

ใน Visual Basic ให้เลือกแถวใน a DataGridView; แถวที่เลือกจะปรากฏขึ้นพร้อมกับสีที่ไฮไลต์ แต่โปรดทราบว่าตำแหน่งเคอร์เซอร์จะไม่เปลี่ยนแปลง:

Grid.Rows(0).Selected = True

ทำการเปลี่ยนตำแหน่งของเคอร์เซอร์:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

การรวมเส้นด้านบนจะเป็นการวางตำแหน่งเคอร์เซอร์และเลือกแถว นี่เป็นขั้นตอนมาตรฐานสำหรับการโฟกัสและเลือกแถวในDataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) เซลล์ (0) มีประโยชน์มากในกรณีที่ข้อมูลกริดยาวกว่าพื้นที่แสดงกริด ไม่จำเป็นต้องใช้คำสั่งที่กล่าวถึงข้างต้นคุณสามารถปัดโค้ดเพื่อเลือกแถว / เซลล์ [ที่มา: ทดสอบโดยส่วนตัว]
BiLaL

จะย้ายเส้นตารางไปยังตำแหน่งที่เลือกได้อย่างไร? แถวถูกเลือก แต่ตำแหน่งกริดไม่อยู่ในแถวที่เลือก การเลื่อนด้วยตนเองจะแสดงแถวที่เลือก จะบังคับให้กริดเลื่อนได้อย่างไร?
FrenkyB

ดูว่า: FirstDisplayedScrollingRowIndex
Rodrigo T.


0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. ล้างการเลือกก่อนหน้าทั้งหมด
  2. วนซ้ำแถวที่ต้องเลือกในกริดของคุณ
  3. รับที่จับแถวจากกริด (โปรดทราบว่าที่นี่ตารางได้รับการอัปเดตด้วยแถวใหม่แล้ว)
  4. ตรวจสอบว่าที่จับแถวถูกต้องหรือไม่
  5. เมื่อจับแถวที่ถูกต้องให้เลือก

โดยที่ itemList คือรายการของแถวที่จะเลือกในมุมมองตาราง




-1

เมื่อตั้งค่าแถวที่เลือกของ DataGridView ในเวลาโหลดให้พิจารณาจัดการสิ่งนี้ในเหตุการณ์ DataBindingComplete เนื่องจากสามารถเขียนทับได้โดยค่าเริ่มต้น


-1

ลองสิ่งนี้:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

หวังว่านี่จะช่วยได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.