2017-01-09 2 views
0

gridcontroldevexpres으로 사용하고 있습니다. 나는 , datepicker, checkbox 등등을 gridcontrol에서 채우고 싶다. 왜냐하면 나는 DGSearch_CellClick과 같은 함수를 만들어야 만했다. 하지만 값을 얻을 때 문제가 있습니다. textedit, datepicker, checkbox과 같은 객체에는 설정할 수 없습니다. 당신은 확실히 그리드에서 직접 값을 편집 할 수 있지만 당신이에, 바람직에있는 경우getrowcellvalue 값을 가져 오지만 객체를 사용하여 텍스트 상자를 채우지 마십시오.

public void DGSearch_CellClick(GridView GView, object[] ConMast, int CurrRow) 
{ 
    try 
    { 
     for (int i = 0; i <= ConMast.Length - 1; i++) 
     { 
      ConMast[i] = GView.GetRowCellValue(CurrRow, GView.Columns[i]).ToString(); 
     } 
    } 
    catch (Exception) { } 
}  

public void Search(int k) 
{ 
    try 
    { 
     // vbcls.DGSearch_CellClick(GViewSearch, new Control[] { TxtMstID, DtDate, TxtJno, DtSite, TxtPartyCode, TxtCompanyCode, TxtTypeCode, TxtArticalCode, TxtJanCharniCode, TxtProcessCode, TxtRgPer, TxtPoPer, TxtManufacturerSize, TxtLsWt, TxtMainCutno, TxtCutNo, TxtRemarks, ChkAutoCut, ChkAutoKno }, k); 

     vbcls.DGSearch_CellClick(GViewSearch, new object[] { TxtMstID.Text, DtDate.EditValue, TxtJno.Text, DtSite.EditValue, TxtPartyCode.Text, TxtCompanyCode.Text, TxtTypeCode.Text, TxtArticalCode.Text, TxtJanCharniCode.Text, TxtProcessCode.Text, TxtRgPer.Text, TxtPoPer.Text, TxtManufacturerSize.Text, TxtLsWt.Text, TxtMainCutno.Text, TxtCutNo.Text, TxtRemarks.Text, ChkAutoCut.Checked, ChkAutoKno.Checked }, k); 
     FillData(); 
     GCSearch.Visible = false; 
     BtnEdit.Focus(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

아무런 조사없이 '공개 무효 DGSearch_CellClick (GridView GView, ref 객체 [] ConMast, int CurrRow)'에서 참조로 ConMast를 전달하면 안되는 지 궁금합니다. – menssana

답변

0

, 나는 DataTable을에, 당신의 최선의 방법은 그리드 데이터 바인딩을 만드는 것입니다 생각 : 아래

내 코드입니다 객체의 컬렉션.

BindingSource 구성 요소를 추가하면 도구가 하나 더 늘어나고 그 사용법을 알려줍니다. 예를 들어, 콜렉션을 바인딩 소스에 바인딩하고 바인딩 소스를 그리드에 바인딩하면 그리드에서 포커스가있는 행을 변경하면 자동으로 bindSource.Current이 업데이트됩니다. 단순히 컬렉션을 반복, 그리드의 항목을 찾기 위해 노력보다, 지금

gridDgSearch.DataSource = bindDgSearch; 

List<DgSearch> dgSearchList = DgSearchCrud.GetAll(); 
bindDgSearch = dgSearchList; 

: 여기

은 예시를 보여주고 있습니다. 그리드의 항목을 업데이트하는 대신 컬렉션에서 업데이트하고 그리드를 새로 고칩니다. 그리드 이벤트의 많은에서 또한

, e.RowHandle이 의미, 문제의 행을 나타냅니다 : (이벤트 인수 파일이없는 경우)

(DgSearch)gridDgSearchView.GetRow(e.RowHandle); 

당신에게 해당 행에 대한 전체 개체를 제공 할 것입니다.

격자의 내용이 어디서 왔는지, 무엇을하고 싶은지 등에 대해 자세히 설명 할 수 있다면이 접근법으로 어떻게 처리 할 수 ​​있는지를 좁힐 수 있습니다.