2011-12-07 66 views
1

我正在使用V2005 C#。使用DataSource的DropDownList更新GridView

我的.aspx頁面中有一個GridView,我可以使用我的EditItemTemplate中的DropDownList控件更新我的數據庫。

我的性別欄

DDL:

<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 EditItemTemplate中我的性別欄,我用硬編碼值,和它的作品。

但是,我試圖在另一列上實現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值,那麼它不在列表中,因此只要切換到編輯模式,就會拋出錯誤,因爲默認值爲空。

我在我的庫中有一個Misc函數,它接受一個DropDownList引用並添加一個空行。

編輯添加一些代碼:

我們使用Telerik的拉德控制,所以這是一個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

相關問題