更新中の製品テーブルがあります。更新されるフィールドは、category_id、prod_name、prod_desc、prize、status です。その更新を行うためにフォームビューを使用しています。ただし、category_id に問題があります。category_id は、sqldatasource を使用してデータベースのカテゴリ テーブルから ID と名前を取得するデータ バインドされたドロップダウン リストです。商品に category_id 値がない場合、SQL によってデフォルトで null 値が入力されます。formview で edititemtemplate モードに移動すると問題が発生します。ドロップダウンリストは db から null 値を表示できないため、次の例外がスローされます。
「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週間解決策を探しました。失敗 :(