1. initGrid() 에서는 동적이지 않은 컬럼에 ComboBox 설정하는 경우.

2. paraGrid_CellClick 은 ComboBox가 동적으로 변경이 필요한 경우.

// 초기화
private void initGrid() {
  // 컬럼을 자동생성하지 않기 위해 설정.
  grid.ActiveSheet.AutoGenerateColumns = false; 
  
  // ComboBox 적용을 위해서 false 설정. 풀면, ComboBox 적용이 안되고, Text로 작동함.
  grid.ActiveSheet.DataAutoCellTypes = false;
  
  // add 컬럼
  // 중략
  
  // 컬럼중에 콤보셀 설정
  ComboBoxCellType sumtyp = new ComboBoxCellType {
    Items = (from DataRow row in _SumTypDT.Rows select row["ITEM_CD"].ToString()).ToArray()
    };
  grid.ActiveSheet.Columns[2].CellType = sumtyp;

}

// 셀선택 시 콤보박스를 동적을 변경함.
private void paraGrid_CellClick(object sender, CellClickEventArgs e)
{
  if (e.Column == 1 && e.View.Owner.DataSource != null) // AnalType 설정
  {
    DataTable dataTable = (DataTable) e.View.Owner.DataSource;
    DataRow row = dataTable.Rows[e.Row];
    string grp1 = Convert.ToString(row["컬럼A"]);
    ComboBoxCellType sumtyp = null;
    if ("값A".Equals(grp1))
    {
      sumtyp = new ComboBoxCellType {
                Items = (from DataRow dr in _AnalTypDT.Rows where dr.Field<string>("ITEM_CD") == "LOT" select dr["ITEM_CD"].ToString()).ToArray()
          };
    }
    else
    {
      sumtyp = new ComboBoxCellType {
                Items = (from DataRow dr in _AnalTypDT.Rows select dr["ITEM_CD"].ToString()).ToArray()
          };
    }

    e.View.Owner.ActiveSheet.Cells[e.Row, e.Column].CellType = sumtyp;
  }
}

end.

728x90

+ Recent posts