2016-08-18 2 views
1

Я создаю систему инвентаризации, которую пользователь может добавить несколько Products, Itemcode, Quantity. У меня есть 10 textbox на колонки. Пользователь может ввести 10 элементов, а затем сохранить все вместе. Но моя проблема в том, что когда вы оставите другое текстовое поле пустым, оно также добавит пустое значение этого текстового поля. Мой вопрос в том, как я могу отфильтровать текстовые поля, которые не являются пустыми, чтобы они сохранялись только в моей базе данных. Вот что я получил сейчас:Добавить только данные в текстовом поле, которое не пусто

var rows = new[] 
    { 
    new {Item = txtItem.Text, Product = txtProduct.Text, Quantity = txtQuantity.Text}, 
    new {Item = txtItem2.Text, Product = txtProduct2.Text, Quantity = txtQuantity2.Text}, 
    new {Item = txtItem3.Text, Product = txtProduct3.Text, Quantity = txtQuantity3.Text}, 
    new {Item = txtItem4.Text, Product = txtProduct4.Text, Quantity = txtQuantity4.Text}, 
    new {Item = txtItem5.Text, Product = txtProduct5.Text, Quantity = txtQuantity5.Text}, 
    new {Item = txtItem6.Text, Product = txtProduct6.Text, Quantity = txtQuantity6.Text}, 
    new {Item = txtItem7.Text, Product = txtProduct7.Text, Quantity = txtQuantity7.Text}, 
    new {Item = txtItem8.Text, Product = txtProduct8.Text, Quantity = txtQuantity8.Text}, 
    new {Item = txtItem9.Text, Product = txtProduct9.Text, Quantity = txtQuantity9.Text}, 
    new {Item = txtItem10.Text, Product = txtProduct10.Text, Quantity = txtQuantity10.Text} 
    }; 
    foreach (var row in rows) 
       { 
    OleDbCommand cmdInsert = new OleDbCommand(
     @"insert into TblInventory (ItemCode,ProductName,Quantity,DateAndTime) values (@ItemCode,@ProductName,@Quantity,@DateAndTime)"); 
     cmdInsert.Parameters.AddWithValue("ItemCode", row.Item); 
     cmdInsert.Parameters.AddWithValue("ProductName", row.Product); 
     cmdInsert.Parameters.AddWithValue("Quantity", row.Quantity.ToString()); 

     cmdInsert.Connection = con; 
     cmdInsert.ExecuteNonQuery(); 

Я новичок в программировании, поэтому, пожалуйста, будьте любезны. Спасибо вам, ребята.

EDIT

Я пытался использовать в то время как заявление после foreach statement но мне кажется, что он до сих пор не работает

while(row.Item != null && row.Product != null && row.Quantity != null) 

ОТВЕТ

я заменить приведенный выше код этого кода и работы

if (!String.IsNullOrEmpty(row.Item) && !String.IsNullOrEmpty(row.Product) && !String.IsNullOrEmpty(row.Quantity)) 
+1

Мое предложение состояло в том, чтобы проверить Item, Product и Quantity на String.IsNullOrEmpty() в вашем цикле foreach и, если так, пропустите эту строку от вставки. –

+0

см. Выше, редактирование @MarcelTheis –

+0

на самом деле, если у вас есть строки, только проверка null не получит все. вам нужно проверить IsNullOrEmpty(), который предоставляется строковым классом и не использует некоторое время, используйте оператор if -> только писать в db, если в этих значениях есть что-то. –

ответ

1


вы должны проверить, если данные пустой или нет, прежде чем вставить его в БД:
ввести если условие в ваш цикл по каждому элементу, который выглядит как этот

if (!String.IsNullOrEmpty(row.Item.Trim() &&  
!String.IsNullOrEmpty(row.Product.Trim()) && 
!String.IsNullOrEmpty(row.Quantity.ToString().Trim())) 
{ 
    // insert into db 
} 


С это исключает пустые значения из вставки.

+0

Спасибо большое :) –

Смежные вопросы