2012-04-05 12 views
0

Reg Windows Forms Syncfusion, Raster-Steuerelement Ich versuche, ein Popup-Feld wie das, das wir in Xcel haben. Klicken Sie mit der rechten Maustaste auf eine Zelle und fügen Sie dann ein kleines Popup-Feld ein, in dem Sie gefragt werden, wie viele Zeilen eingefügt werden müssen.Hinzufügen eines numerischen up in einem Syncfusion Grid-Steuerelement

So ist das, was ich

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(); 
} 

Aber auf diese Weise ein Panel mit einem numerischen updown getan haben, scheint nicht zu funktionieren hinzuzufügen. Grundsätzlich, sobald Sie auf Einfügen klicken, möchte ich ein kleines Fenster/Panel mit einem numerischen Updown und einem Button. Der Benutzer wählt einen Wert aus dem auf/ab und klickt dann auf die Schaltfläche OK.

Irgendwelche Vorschläge?

Dank Sun

Antwort

0

Sie die folgende überarbeitete Code verarbeiten kann es zum Laufen zu bringen.

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(); 
    }