Кажется, что вы пытаетесь установить текст TextBox в DataTable.Это не совсем имеет смысла, так как тип DataTable
не совпадает с string
.Сначала вам нужно извлечь данные из вашей таблицы следующим образом:
var builder = new StringBuilder ();
foreach (var rowObject in precoIng [0].Rows)
{
var row = (DataRow) rowObject;
var id = row ["ID_PRODUTO"].ToString ();
var name = row ["NOME_PRODUTO"].ToString ();
var price = row ["PRECO_PRODUTO"].ToString ();
var count = row ["QNT_PRODUTO"].ToString ();
builder.AppendLine ($"Id: {id}; Name: {name}; Price: {price}; Count: {count}");
}
tbPrecoProduto.Text = builder.ToString ();
Конечно, вы можете сократить это, если вы хотите, например, только цену:
var builder = new StringBuilder ();
foreach (var rowObject in precoIng [0].Rows)
{
var row = (DataRow) rowObject;
var price = row ["PRECO_PRODUTO"].ToString ();
builder.AppendLine (price);
}
tbPrecoProduto.Text = builder.ToString ();
ИКстати, precoIng[0]
всегда будет таким же, как populate.Tables[0]
.
В качестве альтернативы вы можете написать такой метод расширения:
public static string GetData (this DataTable table)
{
var builder = new StringBuilder ();
foreach (DataRow row in table.Rows)
foreach (DataColumn column in table.Columns)
builder.Append (column.ColumnName).Append (": ").Append (row [column]).Append ("; ");
return builder.ToString ();
}
И затем вызвать precoIng[0].GetData()
, чтобы получитьданные в виде строки.
Если вы хотите иметь возможность фильтровать данные для печати, вы можете сделать что-то вроде этого:
public static string GetData (this DataTable table, List <string> columns = null)
{
var builder = new StringBuilder ();
foreach (DataRow row in table.Rows)
if (columns == null)
foreach (DataColumn column in table.Columns)
builder.Append (column.ColumnName).Append (": ").Append (row [column]).Append ("; ");
else
foreach (var column in columns)
builder.Append (column).Append (": ").Append (row [column]).Append ("; ");
return builder.ToString ();
}
Однако я чувствую, что вы неЯ не хочу, чтобы данные всей вашей таблицы были представлены в виде строки, а нужно, чтобы данные имели определенные идентификаторы или что-то в этом роде.Однако, чтобы помочь вам в этом, мне понадобится более точная информация.
Хорошо, так что кажется, что вы действительно хотите что-то вроде этого:
var preco = precoIng.FirstOrDefault ()?.Rows.Cast <DataRow> ().FirstOrDefault ()? ["PRECO_PRODUTO"]?.ToString () ?? "";