2012-04-05 10 views
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(); 
} 

をやっていることである。しかし、数値アップダウンでパネルを追加するこの方法は、動作するようには思えません。基本的に、一度挿入をクリックすると、数字のアップダウンとボタンが付いた小さなウィンドウ/パネルが必要になります。 ユーザーは、上/下から値を選択し、[OK]ボタンをクリックします。

提案がありますか? Sunは

答えて

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(); 
    } 
関連する問題