2015-09-28 156 views
0

我想插入從列表視圖數據的多個行數據庫foreach語句

我遇到了一個錯誤,指出:

沒有映射從對象類型System.Web.UI.WebControls.Literal存在於一個已知的託管提供者本地類型

我有這樣的aspx

<asp:ListView ID="lvPODetails" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <asp:Literal ID="ltRefNo" runat="server" Text='<%# Eval("PODetailNo") %>' Visible="false" /> 
       <%# Eval("ProductName")%> 
      </td> 
      <td> 
       <%# Eval("Price", "{0: #,###.00}") %> 
      </td> 
      <td><%# Eval("DesiredQuantity") %></td> 
      <td><asp:TextBox ID="txtQuantity" runat="server" type="number" Text='<%# Eval("DesiredQuantity") %>' class="form-control" /></td> 
      <td><%# Eval("POAmount", "{0: #,###.00}") %></td> 
      <td><%# Eval("POAmount", "{0: #,###.00}") %></td> 
      <td> 

      </td> 
     </tr> 

    </ItemTemplate> 
    <EmptyDataTemplate> 
     <tr> 
      <td colspan="4"><h2 class="text-center">No records found.</h2></td> 
     </tr> 
    </EmptyDataTemplate> 
</asp:ListView> 

這是我插入

protected void btnAdd_Click(object sender, EventArgs e) 
{ 

    foreach (ListViewItem item in lvPODetails.Items) 
    { 
     TextBox quantity = (TextBox)item.FindControl("txtQuantity"); 
     Literal ltr = (Literal)item.FindControl("ltRefNo"); 


     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "INSERT INTO Inventory VALUES (@ProductID, @Quantity)"; 
     cmd.Parameters.AddWithValue("@ProductID", ltr); 
     cmd.Parameters.AddWithValue("@Quantity", quantity); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 

} 

我認爲foreach循環是錯誤的.c​​s,但我不能說什麼是錯的它。

+1

您是不是要找只是'cmd.Parameters.AddWithValue( 「@的ProductID」,ltr.Text); '(最後注意'.Text')? – Andrei

回答

2

ltr.Text

protected void btnAdd_Click(object sender, EventArgs e) 
{ 

    foreach (ListViewItem item in lvPODetails.Items) 
    { 
     TextBox quantity = (TextBox)item.FindControl("txtQuantity"); 
     Literal ltr = (Literal)item.FindControl("ltRefNo"); 


     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "INSERT INTO Inventory VALUES (@ProductID, @Quantity)"; 
     cmd.Parameters.AddWithValue("@ProductID", ltr.Text); 
     cmd.Parameters.AddWithValue("@Quantity", quantity.Text); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 

} 

公司希望您的問題解決了。

+1

@Downvoter - 評論Please?這個答案有什麼問題? –

+0

@RahulSingh我也對此感到困惑.... – Sankar

+0

感謝這幫助很多 – gamered123