2011-12-07 12 views
1

私はV2005 C#を使用しています。DataSourceのDropDownListを使用してGridViewを更新します。

私の.aspxページにはGridViewがあり、EditItemTemplateのDropDownListコントロールを使用してデータベースを更新できます。

私の性別欄のためのDDL:私の性別欄のための私のDDL EditItemTemplateで

<asp:TemplateField HeaderText="Gender" SortExpression="Gender"> 
     <EditItemTemplate> 
      <asp:DropDownList ID="DropDownList2" runat="server" SelectedValue='<%# Bind("Gender") %>'> 
       <asp:ListItem>M</asp:ListItem> 
       <asp:ListItem>F</asp:ListItem> 
      </asp:DropDownList> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text='<%# Bind("Gender") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

は、私はハードコードされた値を使用し、それが動作します。

しかし、別の列にDDLを実装しようとしました。今回は、私が代わりに固定値を使用するのではなく、別のテーブルからデータを選択SqlDataSourceコントロールを使用し、彼らは代わりに私にエラーを与えた: 'DropDownList3' has a SelectedValue which is invalid because it does not exist in the list of items.Parameter name: value

は私もSelectedValue='<%# Bind("MemberType") %>'を実装しようとしたが、それはうまくいきませんでした。以下は

は私の MemberType DDL EditItemTemplateのためのコードです:

<asp:TemplateField HeaderText="MemberType" SortExpression="MemberType"> 
     <EditItemTemplate> 
      <asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlDataSource2" 
       DataTextField="MemberType" DataValueField="MemberType" SelectedValue='<%# Bind("MemberType") %>'> 
      </asp:DropDownList> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label2" runat="server" Text='<%# Bind("MemberType") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

誰もがここで間違っているものを知っていますか?

はありがとう

答えて

0

うーん...多分これは愚かな質問ですが、値がSqlDataSourceコントロールSELECTクエリで返されたリストに実際にありますか?一般的な問題は、クエリにNULL値がない場合は、リストにないので、編集モードに切り替えると、デフォルト値がnullなのでエラーがスローされるということです。

私はDropDownListリファレンスを受け取り、空の行を追加するMisc関数をライブラリに持っています。いくつかのコードを追加する

EDIT:

私たちは、Telerik Rad社を使用するので、これはRadComboBoxためであるコントロールが、その制御はただのDropDownList(私が思うに、彼らはテキストボックスを拡張している可能性が...)の構文を拡張するため、空のアイテムを追加すると、以下のようになります。

// If there is already an empty row, we will not add an aditional empty row 
     RadComboBoxItem emptyItem = null; 
     emptyItem = rcbObject.FindItemByValue(null) ?? rcbObject.FindItemByValue(""); 

     if (emptyItem !=null) 
      return; 

     // Add a Empty(null) item to the dropdown list 
     RadComboBoxItem item_null = new RadComboBoxItem(); 

     item_null.Text = ""; 
     item_null.Value = null; 
     rcbObject.Items.Insert(0, item_null); 

希望します。

+0

の提案に感謝します。どのように私のデータソースからの値を追加し、私のDLLにそれらを入力するのですか? – user1084683

+0

私の答えはなぜ落選したのですか? – dbstrat

関連する問題