0

データをバインドしようとすると、次のエラーが発生します。

アイテムのリストに存在しないため無効な SelectedValue

<asp:DropDownList ID="DropDownList2" runat="server" 
     DataSourceID="JobCategoryEntityDataSource" DataTextField="ItemValue"
     DataValueField="ItemValue" SelectedValue='<%# Bind("JobCategory") %>' 
     Width="230px">
</asp:DropDownList>

このエラーが発生する理由はわかっています。これは、選択で値が見つからないためです。トランザクション テーブルの JohCategory フィールドが、JobCategoryEntityDataSource からのリストで見つからない場合、単純にエラーがスローされます。

私がしたいのは、ドロップダウンリストでデータが見つからず、エラーをスローしたくない場合は、データをバインドしないことだけです。これどうやってするの ?

別のオプションとして、一致する値が見つからない場合は、「選択してください」などを追加するだけです。

誰か助けてくれませんか?

4

2 に答える 2

1

DataBoundのイベントで値を選択できますdropdown。値の存在を確認してから選択するか、実装することができますtry catch

<asp:DropDownList ID="DropDownList2" runat="server"
 DataSourceID="JobCategoryEntityDataSource" DataTextField="ItemValue"
 DataValueField="ItemValue" 
 Width="230px" OnDataBound="DropDownList2_DataBound">
</asp:DropDownList>

<asp:HiddenField ID="JobCategory" runat="server" value='<%# Bind("JobCategory") %>'></asp:HiddenField>

コードビハインド

protected void DropDownList2_DataBound(object sender, EventArgs e)  
{  
    try{
       HiddenField hf = (HiddenField)Form.FindControl("JobCategory");

       DropDownList2.SelectedValue = hf.Value;

    }Catch(Exception ex){

    }
}  
于 2013-01-27T07:29:04.270 に答える
0

コードビハインドでバインドする必要があります。

  • ステートメントを try/catch ブロックでラップします
  • 最初にアイテムが存在することを確認してFindByNameから、必要に応じて、存在しない場合は追加します。
于 2013-01-27T07:28:44.797 に答える