2011-12-26 39 views
5

Tôi có một chế độ xem dữ liệu/lưới. Tôi đang điền vào lưới với 10 hàng ban đầu. Trên một nút bấm mỗi lần, tôi sẽ tiếp tục thêm 10 hàng vào DataGrid/GridView. Bây giờ tôi muốn đặt tiêu điểm cho hàng cuối cùng mỗi lần lưới được điền. Tôi có thể lấy chỉ mục của hàng đó, nhưng tôi không thể đặt tiêu điểm cho hàng cụ thể đó.Làm cách nào để đặt tiêu điểm trên một hàng cụ thể trong một khung dữ liệu/lưới ảnh?

Có ai trong số các bạn có ý tưởng làm thế nào để làm điều đó trong C#?

Trả lời

10

Hãy thử điều này

dataGridView1.ClearSelection(); 
int nRowIndex = dataGridView1.Rows.Count - 1; 

dataGridView1.Rows[nRowIndex].Selected = true; 
dataGridView1.Rows[nRowIndex].Cells[0].Selected = true; 
+0

Bạn bè, tôi đang tập trung vào sự kiện nhấp của nút đó. Và tôi không thể tìm thấy bất kỳ thuộc tính nào cho GridView là 'Row' và'.Selected'.Vui lòng cho tôi biết cách tôi có thể nhận chúng .. – Sukanya

+0

Kiểm tra ngay sau khi cập nhật –

+1

Thanks.I đã thử mã của bạn nhưng nó đưa ra lỗi là "GridviewRow không chứa định nghĩa cho 'Đã chọn' và không có phương thức mở rộng 'Đã chọn' chấp nhận đối số đầu tiên của loại System.Web.UI.WebControls. GridViewRow có thể được tìm thấy ".Một tôi thiếu tham chiếu chỉ thị hoặc lắp ráp? – Sukanya

1

Hãy thử này ...

DataGridViewRow rowToSelect = this.dgvJobList.CurrentRow; 

rowToSelect.Selected = true; 



rowToSelect.Cells[0].Selected = true; 

this.dgvJobList.CurrentCell = rowToSelect.Cells[0]; 

this.dgvJobList.BeginEdit(true); 
+0

Tôi không nhận được bất kỳ tài sản nào .CurrentRow cho chế độ xem lưới.Xin vui lòng trợ giúp .. – Sukanya

4

Đối với WinForms DataGridView:

myDataGridView.CurrentCell = myDataGridView.Rows[theRowIndex].Cells[0]; 

Đối với WebForms GridView, sử dụng tài sản SelectedIndex

myGridView.SelectedIndex = theRowIndex; 
+0

Không có bất động sản nào là 'CurrentCell' cho chế độ xem lưới .. – Sukanya

+0

@Sukanya Có dành cho [DataGridView] (http://msdn.microsoft.com /en-us/library/system.windows.forms.datagridview.currentcell.aspx). Bạn đang làm việc với WebView GridView? Nếu có, vui lòng đánh dấu điều này trong câu hỏi của bạn. – akoso

+0

@Sukanya hãy xem chỉnh sửa của tôi – akoso

0

Hãy thử điều này, tôi hoạt động tốt với đoạn mã dưới đây trong Extjs 4.2.0.

//currentIndex is the index of grid row 
var rowElement = this.getView().getRecord(currentIndex); 
this.getView().focusRow(rowElement); 
0

Hãy thử điều này, đó là công việc đối với tôi

public static void ItemSetFocus(DataGrid Dg, int SelIndex) 
    { 
     if (Dg.Items.Count >= 1 && SelIndex < Dg.Items.Count) 
     { 
      Dg.ScrollIntoView(Dg.Items.GetItemAt(SelIndex)); 
      Dg.SelectionMode = DataGridSelectionMode.Single; 
      Dg.SelectionUnit = DataGridSelectionUnit.FullRow; 
      Dg.SelectedIndex = SelIndex; 
      DataGridRow row = (DataGridRow)Dg.ItemContainerGenerator.ContainerFromIndex(SelIndex); 
       row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
     } 
    } 
0

Chủ đề này đã được một gửi thần. Tôi đang sử dụng VB trong Visual Studio 2017 và chỉ cần thiết để đi đến dưới cùng của một DATAGRID để cho phép người dùng nhập dữ liệu. Bằng cách nghiên cứu những câu trả lời này tôi đã đưa ra giải pháp này và nghĩ rằng những người khác có thể thấy nó hữu ích.

Private Sub AddBUTTON_Click(sender As Object, e As RoutedEventArgs) Handles 
AddBUTTON.Click 
     ' Go to bottom to allow user to add item in last row 
     DataGrid.Focus() 
     DataGrid.UnselectAll() 
     DataGrid.SelectedIndex = 0 
     DataGrid.ScrollIntoView(DataGrid.SelectedItem) 
     Dim endofitems As Integer = DataGrid.Items.Count   
     DataGrid.ScrollIntoView(DataGrid.Items.GetItemAt(endofitems - 1)) 
    End Sub 
Các vấn đề liên quan