2012-08-13 2 views
2

데이터 입력 양식 작업 중입니다. 저장 버튼을 클릭하면 양식의 데이터가 데이터베이스에 저장됩니다. 또한 DataGridview을 데이터베이스에서 채우고 싶습니다.Gridview 행 선택 및 편집

제 질문은 : DataGridview에서 행을 선택하면 그 행이 선택 항목으로 표시됩니다. 기본 키 데이터를 기반으로 데이터 입력 양식의 모든 필드가 채워집니다.

어떤 이벤트를 사용할 수 있습니까? 누구든지 제안을 할 수 있습니까?

+0

재미를,이에 대한 모든 대답을 게시 어제 질문을했고 asp.net으로 태그를 지정하고'GridView'를 참조했다고 맹세했습니다. asp.net 태그가없는 경우 질문을 보지 못했을 것입니다 ... – pseudocoder

답변

0

현재 행을 얻기 위해 이벤트를 입력

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
     { 
      textBox1.Text = dataGridView1.CurrentRow[e.RowIndex].ToString(); 
     } 

을하거나 행을 사용할 수 있습니다

private void dataGridView1_RowEnter(object sender, 
    DataGridViewCellEventArgs e) 
{ 
    //e.RowIndex to get the index of the row 
} 
+0

그리드 자체에서 레코드를 변경하고 싶지 않습니다. 편집 가능한 열을 false로 설정해야합니다. –

+0

변경 사항을 확인하십시오. 이게 당신이 질문에서 의미하는 것입니까? –

+0

나는 그것이 이벤트를 입력 행에 의해 수행되어야한다고 생각 ... 그 이벤트에 관한 아이디어가 있습니까? 어떻게 사용할 수 있습니까? Gridview의 열 중 하나에서 기본 키 값을 가져 와서 해당 기본 키를 기반으로 DB의 모든 레코드를 검색 할 수 있습니다. –

1

가장 쉬운 방법을 참조 전체 목록은 RowDataBound

를 사용해야하는있는 gridview를 채우는 행이의 SelectedIndexChanged이

라고 선택한 경우

라고 바인딩 원본과 데이터 바인딩을 사용하는 것입니다.

양식에 바인딩 소스를 추가하고이 데이터 소스를 DataGridView의 데이터 소스로 설정 한 다음 데이터 입력 필드에 데이터 바인딩을 설정합니다. 여기서는 하나의 텍스트 상자에 바인딩합니다.

// Load your data into a data source - for the example just imagine a data table called dt 
bindingSource1.DataSource = dt; 
dataGridView1.DataSource = bindingSource1; 

// Now we set up a databinding to a text box, to an example property LastName 
textBox1.DataBindings.Add(new Binding("Text", bindingSource1, "LastName", false, 
    DataSourceUpdateMode.OnPropertyChanged)); 

이 바인딩은 자동으로 양방향이며 그리드에서 항목을 선택하면 작동합니다. 선택한 각 항목의 성이 표시됩니다.

조금 빠르다는 (당신이 그리드를 입력 할 때까지 때때로 지연 수) 당신은 글 상자 LostFocus 이벤트에 다음과 같은 작업을 수행 할 수 바인딩 두 가지 방식으로 만들려면 :

void textBox1_LostFocus(object sender, EventArgs e) 
{ 
    bindingSource1.ResetBindings(false); 
}