Eine nicht behandelte Ausnahme des Typs 'System.StackOverflowException " ist in mscorlib.dll Fehler aufgetreten?
Bin immer Fehler Ungebundenen Ausdruck. Ich habe eine neue Spalte & Unbounded-Ausdrucks zur Laufzeit. Ich bekomme in einer Zelle Werte(GetRowCellValue) von gridview und versuchen zu ändern, dass die ungebundenen Ausdrucks die Spalte mit neuen Werten(SetRowCellValue). Aber Fehler angezeigt, was ist mein Fehler ? Helfen Sie mir.
Dies ist mein Code.
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]";
}
Code ein, um den Wert & Sollwert
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
{
}
}
Mir Bitte helfen ich will get & Sollwert
- Meine Vermutung ist, dass es ist Ihr Anruf, um
gridView1.SetRowCellValue
verursachtgridView1_CustomUnboundColumnData
Ereignis genannt zu werden - Hallo Jens, Wenn ich ändern SetRowCellValue zu gridView1_CustomUnboundColumnData es zeigt Fehler wie "Die CustomUnboundColumnData Ereignis kann erscheint nur Links von += oder =+ "
- ja ofc 😀 hehe, warum sollte man das tun? anstelle der Verwendung von
gridView1...
versuchen und sehen, ob diee
variable kann verwendet werden, statt.. - Hallo Jens, 😀 Bin neu in c#, das ist, warum.... Keine e. ist der dort nicht arbeitet, weil es draußen ist, die Funktion also.
- Sicher, "e" ist außerhalb von "calfun"... aber du musst es als argument, oder bewegen Sie Ihren code in die Ereignisprozedur. Ihre "calfunc", da es nicht sauber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den letzten paar frames, die von Ihrem stacktrace nützlich sein könnte... selbst mit all diesen code können wir nur spekulieren.
Aber ich Stimme mit JensKloster Kommentar: DevExpress ungebundenen Spalten sind gemacht, um anzuzeigen ungebundenen Spalten (berechnete, von den anderen, dann).
Der Veranstaltung ist hier zu machen, berechnen Sie diesen Wert. Es wird jedes mal aufgerufen, wenn Sie etwas ändern in Ihrem Reihe.
Also, Aufruf von setvalue wird dazu führen, dass die Methode nennen Sie es selbst. (=> stack-overflow-exception)
Verwenden
e.Value = myValue
um Ihren Wert:statt
wobei e die DevExpress.XtraGrid.Blick.Base.CustomColumnDataEventArgs als argument mitgegeben Ihrer Veranstaltung.
edit: Darüber hinaus denke ich, dass bei der Verwendung
gridView1.FocusedRowHandle
Sie wurden unter Bezugnahme aufe.RowHandle
? Sehen diese, um zu sehen, was Euch gegeben ist, wenn das Ereignis aufgerufen wird.edit2:, warum mit custom-Mechanismen, wenn Sie nur wollen, multiplizieren Sie zwei Spalten ?
unbColumn.UnboundExpression = "[Quantity] * [Each]";
ausreichend ist, nicht wahr ?unbColumn.UnboundExpression = "[Quantity] * [Each]
ist sifficient(FocusedRowHandle)
. Dann möchte ich multiplizieren Sie beide Werte und erhalten neue Wert. Endlich, der neue Wert ist wollen gespeichert im UngebundenenColumn[PriceQuantity]
. Diese sind alle fertig, wenn ich die Option 'Rabatt' in denRepositoryLookupEdit
in der Gebundenen Spalte. Wenn ich wählen Sie einen anderen Eintrag aus RepositoryLookupEdit dann 'Rabatt' ich brauche zu berechnenUnbound Expression[Quantity]*[Each].
Helfen mir, meine Aufgabe ?