2011-12-05 38 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: