【发布时间】:2015-09-28 13:55:26
【问题描述】:
我想从listview中插入多行数据到数据库
我遇到了一个错误说明:
不存在从对象类型 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>
这是我插入的 .cs
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循环是错误的,但我不能说它有什么问题。
【问题讨论】:
-
你的意思是
cmd.Parameters.AddWithValue("@ProductID", ltr.Text);(最后注意.Text)?