0

Reg 창은 syncfusion, 그리드 컨트롤을 형성합니다 xcel에있는 것과 같은 팝업 상자를 추가하려고합니다. 셀을 오른쪽 클릭하고 삽입 할 때 몇 개의 행을 삽입해야 하는지를 묻는 작은 팝업 상자를 삽입하십시오.Syncfusion 그리드 컨트롤에서 숫자를 아래쪽으로 더하기

그래서 이것은 내가

private void InsertRowToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      GridRangeInfoList list; 

      list = theGrid.Selections.GetSelectedRows(true, false); 
      int rowNumber = list.ActiveRange.Top; 
      Panel box = new Panel(); // 
      NumericUpDown ud1 = new NumericUpDown(); 

      ud1.Dock = DockStyle.Left; ud1.Width = 30; 
      ud1.BorderStyle = BorderStyle.FixedSingle; 
      box.Controls.Add(ud1); 
      box.BorderStyle = BorderStyle.None; 
      Button btn = new Button(); 
      btn.Dock = DockStyle.Bottom; 
      btn.Text = "OK"; 
      box.Controls.Add(btn); 

      this.Controls.AddRange(new System.Windows.Forms.Control[] { box }); 
      btn.Click += new EventHandler(btn_Click); 
      theGrid.Controls.Add(box); 
      box.Dock = DockStyle.Bottom; 
      box.Show(); 
      numberOfRowstobeInserted = (int)ud1.Value; 
      this.Controls.Add(box); 
      theData.CreateRowsToInsert(rowNumber, numberOfRowstobeInserted); 

      theGrid.Refresh(); 
} 

했을하지만 숫자 스핀과 패널을 추가하는이 방법이 작동하지 않는 것입니다. 기본적으로 삽입을 클릭하면 작은 창/패널에 숫자가 올라가고 버튼이 필요합니다. 사용자가 위/아래에서 값을 선택한 다음 확인 버튼을 클릭합니다.

제안 사항? 일이

답변

0

는 다음과 같은 수정 된 코드를 처리 할 수 ​​

덕분에이 작업을 얻을 수 있습니다.

private Panel box; 
    private NumericUpDown ud1; 
    private Button btn;   
    int rowNumber, rowIndex, colIndex; 
    GridStyleInfo style; 

    void ContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     rowNumber = this.gridGroupingControl1.Table.CurrentRecord.GetSourceIndex(); 
     rowIndex = this.gridGroupingControl1.TableControl.CurrentCell.RowIndex; 
     colIndex = this.gridGroupingControl1.TableControl.CurrentCell.ColIndex; 
     style = this.gridGroupingControl1.TableControl.GetViewStyleInfo(rowIndex,colIndex); 
     box = new Panel(); // 
     ud1 = new NumericUpDown(); 

     ud1.Location = new Point(15, 15); 
     ud1.Size = new Size(50, 10); 
     ud1.BorderStyle = BorderStyle.FixedSingle; 
     box.Controls.Add(ud1); 
     box.BorderStyle = BorderStyle.None; 

     btn = new Button(); 
     btn.Location = new Point(30, 50); 
     btn.Size = new Size(30,20); 
     btn.Text = "OK"; 
     btn.Click += new EventHandler(btn_Click); 
     box.Controls.Add(btn); 

     box.Location = this.gridGroupingControl1.TableControl.CurrentCell.Renderer.GetCellLayout(rowIndex, colIndex, style).ClientRectangle.Location; 
     box.Size = new Size(80, 70); 

     this.gridGroupingControl1.Controls.Add(box); 
     box.Show(); 
     box.BringToFront(); 
    } 

    void btn_Click(object sender, EventArgs e) 
    { 
     int numberOfRowstobeInserted = (int)ud1.Value; 
     DataTable dt = (this.gridGroupingControl1.DataSource as DataView).Table; 
     for (int count = 0; count < numberOfRowstobeInserted; count++) 
     { 
      DataRow dr = dt.NewRow(); 
      for (int i = 0; i < dt.Columns.Count; i++) 
       dr[i] = 0; //default value 
      dt.Rows.InsertAt(dr, rowNumber++); 
     } 
     box.Dispose(); 
    } 
관련 문제