Fila de datos “La conversión especificada no es válida” C#
No puedo entender por qué esto no funciona. Recibo el mismo mensaje de error “Cast especificado no válido”. Soy nuevo en C#, por favor sé amable. Falla en la línea if(!((int)WrkRow[“ManualWeight”] == 1 |, etc. He intentado varias variaciones de código, no todas pegadas aquí. ManualWeight es un campo de número en la tabla.
2nd intento:
Si (dt.Rows.Count > 0) {
DataRow WrkRow = dt.Rows [0]; // ds.Tables (0) .Rows (0)
si (mod1.IsTareout == true)
recortar = (string) WrkRow [“Trucker”];
sBarcode = $ “{trim.Trim()} {(string) WrkRow [“TruckNo”]} “;
XRSwatLaserCert rSwatLaserCert = nuevo XRSwatLaserCert();
rSwatLaserCert.DataSource = dt;
ReportPrintTool rpt = nueva ReportPrintTool(rSwatLaserCert);
{
XRBarCode XrBCTareOut = nuevo XRBarCode();
rSwatLaserCert.XrBCTareOut = nuevo XRBarCode
{
Texto = sBarcode
};
if (WrkRow.Field
{
rSwatLaserCert.XrLabelManualGross1.Visible = falso;
rSwatLaserCert.XrLabelManualGross2.Visible = falso;
rSwatLaserCert.XrLabelManualGross3.Visible = falso;
}
}
3er intento:
si (dt.Rows.Count > 0) {
DataRow WrkRow = dt.Rows [0]; // ds.Tables (0) .Rows (0)
si (mod1.IsTareout == true)
recortar = (string) WrkRow [“Trucker”];
sBarcode = $ “{trim.Trim()} {(string) WrkRow [“TruckNo”]} “;
XRSwatLaserCert rSwatLaserCert = nuevo XRSwatLaserCert();
rSwatLaserCert.DataSource = dt;
ReportPrintTool rpt = nueva ReportPrintTool(rSwatLaserCert);
{
XRBarCode XrBCTareOut = nuevo XRBarCode();
rSwatLaserCert.XrBCTareOut = nuevo XRBarCode
{
Texto = sBarcode
};
var manweight = WrkRow.Field
if (manweight! = 1 | manweight == 3)
{
rSwatLaserCert.XrLabelManualGross1.Visible = falso;
rSwatLaserCert.XrLabelManualGross2.Visible = falso;
rSwatLaserCert.XrLabelManualGross3.Visible = falso;
}
}
davy.ai
El problema parece estar relacionado con la conversión del valor del campo “ManualWeight” a un entero. El mensaje de error indica que la conversión no es válida.
En el primer y segundo intento, el código intenta utilizar el operador “|” en lugar de “||” para evaluar las condiciones en la instrucción if. “|” es un operador OR a nivel de bits, y “||” es un operador OR lógico.
En el tercer intento, el código utiliza correctamente “||” para el operador OR lógico. Sin embargo, la condición todavía parece ser incorrecta. La condición comprueba si un valor int no es igual a 1 O igual a 3, lo que significa que siempre será verdadero para cualquier int que no sea 1.
Para solucionar el problema, la condición debe cambiarse para comprobar si el campo “ManualWeight” es igual a 1 o 3, utilizando el operador “==” en ambos casos:
Esto ocultará las etiquetas solo si el valor “ManualWeight” no es ni 1 ni 3.