2011-12-05 96 views
1

我不知道如何解決以下問題。我有包含對象數據源的下拉列表。然後在代碼中有這樣的方法下拉列表不會填充

void InitPageData() 
{ 
    MembershipUser user = Membership.GetUser(); 
    DataSetTableAdapters.MemberInfoTableAdapter da = new DataSetTableAdapters.MemberInfoTableAdapter(); 
    DataSet.MemberInfoDataTable dt = da.GetMember((Guid)user.ProviderUserKey); 
    if (dt.Rows.Count == 1) 
    { 
     DataSet.MemberInfoRow mr = dt[0]; 
     //rank.Text = mr.rank; 
     //position.Text = mr.position; 

     UserName.Text = user.UserName; 
     ... 
    } 

此方法填充頁面上的表單域。我想要做的是從ods中填充等級下拉列表,但使用上面的這個方法來填充rank rank.Text = mr.rank的等級dropwon列表的選定項目。在這個例子中,拋出錯誤的代碼行被註釋掉了,否則它會拋出:「'rank'有一個SelectedValue,它是無效的,因爲它不存在於項目列表中 參數名稱:value」。我已經chaned代碼rank.DataTextFiled = mr.rank和rank.DataValueField = mr.rankid.ToString(),但這引發了另一個錯誤:「DataBinding:'System.Data.DataRowView'不包含一個名爲'星'的財產。「 「星」是mr.rank的價值。

下面是下拉列表和ODS的樣子:

<asp:DropDownList runat="server" ID="rank" CssClass="txtfield" DataSourceID="ODCRanks" 
    DataTextField="Rank" DataValueField="ID" AppendDataBoundItems="True"> 
<asp:ListItem Text="--- Select a Rank ---" Value="-1" />            

<asp:ObjectDataSource ID="ODCRanks" runat="server" 
OldValuesParameterFormatString="original_{0}" SelectMethod="GetRanks" 
TypeName="RanksTableAdapters.RankTableAdapter"></asp:ObjectDataSource> 

回答

1

你應該嘗試添加數據列到您的數據表(通過ID和排名是列名)以便數據可以綁定到控制。

+0

agian,不知道你的意思。 ID和排名是在分貝列,但我猜這不是你的意思... – Risho

1

Text屬性通過值來設置它。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.text.aspx

你似乎有什麼將與該值相關的文本,你想設置爲選定的項目。我想這主要是因爲你的價值集合被綁定到一個被稱爲ID的東西,我認爲星級不是一個ID。

如果Star將顯示爲DataTextField中的某些內容,請使用項目集合FindByText方法將其選中。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitemcollection.findbytext.aspx

ListItem li = DropDownList1.Items.FindByText("one"); 
    if (li != null) li.Selected = true; 

如果星確實是一個ID,然後檢查集合試圖選擇任何東西之前完全加載。

+0

我也試過(rank.selectedItem = mr.rank)錯誤與「...不能分配 - 讀只有價值「。您建議的鏈接並不代表太多。不知道如何將它與代碼中發生的事情聯繫起來。 – Risho

+0

我沒有說要設置SelectedItem。下拉列表是否填充?如果是這樣,請查看網頁的源代碼併發布生成爲select元素的HTML。 – Nikki9696

+0

這裏是來自html的ddl: