gpt4 book ai didi

c# - asp.net c# 中的 Formview EditItemTemplate

转载 作者:行者123 更新时间:2023-11-30 18:37:23 25 4
gpt4 key购买 nike

我有一个正在更新的产品表。更新的字段是 category_id、prod_name、prod_desc、prize、status。我正在使用 formview 进行更新。但是我在使用 category_id 时遇到了问题。 category_id 是一个数据绑定(bind)下拉列表,使用 sqldatasource 从数据库中的类别表中获取 id 和名称。当商品没有category_id值时,sql默认输入null值。 当我在 formview 中进入 edititemtemplate 模式时,问题就来了,下拉列表无法显示来自 db 的空值,因此它抛出一个异常:

'category_idDropdown' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value

这是我在 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 代码,下拉列表数据绑定(bind)到:

<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 个星期的解决方案。没有成功:(

最佳答案

尝试在设置空值之前重新绑定(bind)您的数据源:

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 绑定(bind)到一个不包含该值的数据源。

关于c# - asp.net c# 中的 Formview EditItemTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12863442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com