2011-12-15 1 views
1

저는 윈도우 폼과 C# 및 MySQL을 사용하고 있습니다.바인딩하는 방법 Datagridview 텍스트 상자에 데이터베이스 값이 있습니까?

그 컨트롤 태그의 도움으로 Datagridview에서 3 개의 언 바운드 열을 추가하려면 마녀가 Datagridview 오른쪽 상단에 있습니다.

column1은 DataGridViewCheckBoxColumn입니다. 열 2와 3은 DataGridViewTextBoxColumn입니다.

그 후 나는 Datagrid보기를 채우기위한 코드를 작성했습니다. 그에서

connection.Open(); 
       DataTable dt = new DataTable(); 
       // Create a new data adapter based on the specified query. 
       MySqlDataAdapter da = new MySqlDataAdapter("select admin_no,name from " + FormName + " where class_code='" + class_code + "' and division_code='" + division_code + "' and Delete_Status = 0", connection); 
       //SQl command builder is used to get data from database based on query 
       MySqlCommandBuilder cmd = new MySqlCommandBuilder(da); 
       //Fill data table 
       da.Fill(dt); 
       //assigning data table to Datagridview 
       dataGridView1.DataSource = dt; 
       //Resize the Datagridview column to fit the gridview columns with data in datagridview 
       dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
       connection.Close(); 

나는 u는 텍스트 상자의 두 열이 비어 참조 여기에

enter image description here

을 얻었다. 다른 두 개가 추가됩니다.

텍스트 상자를 제거하고 싶지 않습니다. 그래서 난 내 텍스트 상자에 데이터를 채우려 아닌 자동을 생성. ..

이 ....이 문제를 해결하기 위해,

감사를 도와주세요 나는 템플릿 텍스트 상자의 값을 가지고 열. 그러나 자동 생성 된 열의 마지막 두 열이 추가됩니다. 그것을 제거하는 방법.

enter image description here

connection.Open(); 
       DataTable dt = new DataTable();     
       MySqlDataAdapter da = new MySqlDataAdapter("select admin_no,name from " + FormName + " where class_code='" + class_code + "' and division_code='" + division_code + "' and Delete_Status = 0", connection);     
       MySqlCommandBuilder cmd = new MySqlCommandBuilder(da);     
       da.Fill(dt);     
       dataGridView1.DataSource = dt;         
       dataGridView1.Columns[1].DataPropertyName = "admin_no"; 
       dataGridView1.Columns[2].DataPropertyName = "name"; 
       connection.Close(); 

다시 제발 도와주세요.

죄송합니다. "dataGridView1.AutoGenerateColumns = false;"를 (를) 잊어 버렸습니다.

감사합니다.

답변

2

DataGridViewTextBoxColumn.DataPropertyName="name_of_field"을 설정해야합니다. MSDN 기사를보십시오.

PS : 당신은

+0

감사합니다. 하지만 어디에서 "dataGridView1.DataSource = dt;"뒤에이 코드를 추가 할 수 있습니까? 또는 전에 .. – Sagotharan

+0

@ Sagotharan - 나는 당신이 디자이너에서 dataGridview 컨트롤의 Columns 속성 (마법사)을 통해 열을 추가했다고 생각합니다. 열 속성을 열고 DataPropertyName 속성을 설정합니다. – adatapost

+1

감사합니다. 텍스트 상자 값을 받았습니다. 그러나 마지막 두 칼럼도 포함되었습니다. 어떻게 제거 할 수 있습니까? – Sagotharan

2

sql-injection.이 DataGridView에 속성으로 이동 방지하기 위해 하드 코딩 된 SQL 문자열 대신 Parameterized 쿼리를 사용해야합니다. 열위한

검색은 .. 당신의 언 바운드 관리자에는 열이 자동으로 언 바운드 관리자에게 어떤 열을 DataGridView에없는 당신의 DataTable에 열 admin_no을 바인딩

을 admin_no하기 위해 DataproperyName을 설정합니다. 다른 언 바운드 열에서도이 작업을 수행하십시오.

감사합니다.

+1

감사합니다. 나는 나의 요구를 얻었다. – Sagotharan