2013-11-25 153 views
0

錯誤無約束表達式。我在運行時創建了一個新列& Unbounded Expression。我從gridview中獲取一個特定的單元格值(GetRowCellValue),並嘗試用新值(SetRowCellValue)更改該未綁定的表達式列。但錯誤顯示我的錯誤是什麼?幫我。發生mscorlib.dll錯誤時出現未處理的「System.StackOverflowException」類型異常?

這是我的代碼。

private void unbound2_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'orionSystemDataSet.Test_Product' table. You can move, or remove it, as needed. 
     this.test_ProductTableAdapter.Fill(this.orionSystemDataSet.Test_Product); 
     // TODO: This line of code loads data into the 'orionSystemDataSet.Test_Gridview' table. You can move, or remove it, as needed. 
     this.test_GridviewTableAdapter.Fill(this.orionSystemDataSet.Test_Gridview); 


     var product = repositoryItemGridLookUpEdit1.View.Columns.AddField("Type"); 
     product.Visible = true; 


     //create unbound column in form load 
     unboundcreate(); 

    } 

    private void unboundcreate() 
    { 
     gridControl1.ForceInitialize(); 

     GridColumn unbColumn = gridView1.Columns.AddField("PriceQuantity"); 
     unbColumn.Caption = "PricQuan"; 
     unbColumn.VisibleIndex = gridView1.Columns.Count; 
     unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; 
     unbColumn.OptionsColumn.AllowEdit = false; 
     unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; 
     unbColumn.DisplayFormat.FormatString = "c"; 
     unbColumn.AppearanceCell.BackColor = Color.LemonChiffon; 
     unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; 
     unbColumn.UnboundExpression = "[Quantity] * [Each]"; 

    } 

代碼來獲得價值&設定值

private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) 
    { 

      GridView view = sender as GridView; 


      if (e.Column.FieldName == "PriceQuantity" && e.IsGetData) 
      { 
       //e.Value = getTotalValue(view, e.ListSourceRowIndex); 
       calfun(); 
      } 
      else 
      { 
       // nothing 
      } 

    } 


    private void calfun() 
    { 
     if (gridView1.FocusedRowHandle >= 1) 
     { 

      string temp = "Discount"; 
      //string dis = TXE_Gettype.Text.ToString(); 
      object objec = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Type"]); 
      string dis = objec.ToString(); 

      if (dis == temp) 
      { 
       object obj = gridView1.GetRowCellValue(gridView1.FocusedRowHandle - 1, gridView1.Columns["Each"]); 

       int aa = Convert.ToInt32(obj); 
       //textEdit1.Text = aa.ToString(); 

       object obj1 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Each"]); 

       int a = Convert.ToInt32(obj1); 
       int b = aa; 

       int c = a * b; 

       //textEdit2.Text = c.ToString(); 

       gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["PriceQuantity"], c); 
      } 
     } 
     else 
     { 
      } 
    } 

幫助我,請我希望得到&設定值

+1

我的猜測是,它是你的'gridView1.SetRowCellValue'調用導致'gridView1_CustomUnboundColumnData'事件被稱爲 –

+0

喜延,如果我修改SetRowCellValue到gridView1_CustomUnboundColumnData它顯示錯誤像「CustomUnboundColumnData事件只能出現左手邊+ =或= +「 – Srihari

+0

yesc:D呵呵,你爲什麼要那樣做?而不是使用'gridView1 ...'嘗試看看是否可以使用'e'變量.. –

回答

2

近一您的堆棧跟蹤的框架可能是有用的......即使用所有這些代碼,我們只能推測。

但我同意JensKloster的評論:DevExpress unbound列被用來顯示未綁定列(然後從其他人計算)。

事件是在這裏讓你計算出這個值。每當你在你的行中改變某些東西時,它就會被調用。 因此,從它調用setvalue將導致該方法自己調用它。 (=>堆棧溢出異常)

使用e.Value = myValue來設置值:

e.Value = c; 

代替

gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["PriceQuantity"], c); 

其中e是給出作爲所述DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs你的事件的論點。

編輯:此外,我想,當使用gridView1.FocusedRowHandle,你是指e.RowHandle?請參閱this以查看在調用此事件時給予您的內容。

edit2:爲什麼使用自定義機制,如果你只是想要乘以兩列? unbColumn.UnboundExpression = "[Quantity] * [Each]";就夠了,不是嗎?

+1

我完全同意 - 我會認爲'unbColumn.UnboundExpression =「[Quantity] * [Each]'sifficient –

+0

您好Jens&Olivier,我的任務是獲得」Gridview中的前一個項目的折扣「,所以我需要得到在前一行的單元格值並獲取當前行的單元格值,所以我使用了'(FocusedRowHandle)',然後我想將這兩個值相乘並獲得新的值,最後這個新值希望存儲在Unbound'Column [PriceQuantity ]'。當我在綁定列中的'RepositoryLookupEdit'中選擇'折扣'時,全部完成。如果我從RepositoryLookupEdit中選擇任何其他項目,那麼'折扣'我需要計算'Unbound Expression [Quantity] * [Each]。「幫我完成我的任務? – Srihari

相關問題