我有一个正在更新的产品表。更新的字段是 category_id、prod_name、prod_desc、prize、status。我正在使用表单视图来进行更新。但是我遇到了 category_id 的问题。category_id 是一个数据绑定下拉列表,使用 sqldatasource 从数据库中的类别表中获取 id 和 name。当产品没有category_id值时,sql默认输入空值。当我在 formview 中进入 edititemtemplate 模式时,问题出现了,下拉列表无法显示 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 周的解决方案。没有成功:(