我有一个正在更新的产品表。更新的字段是category_id,prod_name,prod_desc,奖品,状态。我正在使用formview进行更新。但是我遇到了category_id的问题。 category_id是一个数据绑定下拉列表,使用sqldatasource从数据库中的类别表中获取id和name。当产品没有category_id值时,默认情况下由sql输入空值。 当我在formview中进入edititemtemplate模式时,问题出现了,dropdownlist无法显示db的空值,因此它抛出异常:
'category_idDropdown'有一个SelectedValue,因为它无效 在项目列表中不存在。参数名称:值
这是我在updateprod.aspx页面中的代码:
<asp:DropDownList ID="category_idDropdown" runat="server"
AppendDataBoundItems="True"
AutoPostBack="True"
DataSourceID="catnames"
DataTextField="category_name"
DataValueField="category_id" ViewStateMode="Enabled"
SelectedValue='<%# Bind("category_id") %>' >
<asp:ListItem Text="-- Choose Category--" Value="0" Selected="True">
</asp:ListItem>
</asp:DropDownList>
这是我的sqldatasource代码,下拉列表数据绑定到:
<asp:SqlDataSource ID="catnames" runat="server"
ConnectionString="<%$ ConnectionStrings:cloud_Kewl.Properties.Settings.conString %>"
SelectCommand="SELECT [category_id], [category_name] FROM [category]">
</asp:SqlDataSource>
&安培;最后,这是用于更新产品详细信息的sqldatasource:
<asp:SqlDataSource ID="productUpdate" runat="server"
ConnectionString="<%$ ConnectionStrings:cloud_Kewl.Properties.Settings.conString %>"
SelectCommand="SELECT prod_id, category_id, prod_name, prod_desc, prod_price, img_name, img_contenttype, prod_img, status FROM product WHERE (prod_id = @prod_id)"
UpdateCommand="UPDATE product SET category_id = @category_id, prod_name = @prod_name, prod_desc = @prod_desc, prod_price = @prod_price, status = @status WHERE (prod_id = @prod_id)">
<SelectParameters>
<asp:QueryStringParameter Name="prod_id" QueryStringField="prod_id" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="category_id" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="prod_name" Type="String" />
<asp:Parameter Name="prod_desc" Type="String" />
<asp:Parameter Name="prod_price" Type="Decimal" />
<asp:Parameter Name="status" Type="String" />
<asp:Parameter Name="prod_id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
我查看了有关此网站中的formview和edititemtemplate的问题,但没有一个能让我知道如何解决这个问题。 我尝试以编程方式解决它,但没有成功解决这个问题。请帮帮我,我找了3个星期的解决方案。没有成功:(
答案 0 :(得分:0)
尝试在设置空值之前重新绑定数据源:
protected void myFormView_OnItemEditing(object sender, ListViewEditEventArgs e)
{
DropDownList category_idDropdown = (DropDownList)(myFormView.FindControl("category_idDropDown"));
category_idDropdown.DataBind();
category_idDropdown.Items.Add(0, new ListItem("Select", null));
}
问题可能不是你试图选择一个不存在的值,而是你试图将已经一个空值的DropDownList绑定到一个不包含该值的数据源。