2015-09-28 53 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