【发布时间】:2011-12-05 21:32:21
【问题描述】:
我不确定如何更正以下问题。我有一个包含对象数据源的下拉列表。然后在代码中有这样的方法
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.Text = mr.rank 行填充排名下拉列表的选定项目。在这个例子中,抛出错误的代码行被注释掉,否则它抛出这个:“'rank'有一个无效的SelectedValue,因为它不存在于项目列表中。 参数名称:值”。
我已将代码更改为 rank.DataTextFiled = mr.rank 和 rank.DataValueField = mr.rankid.ToString() 但这引发了另一个错误:“DataBinding: 'System.Data.DataRowView' 不包含属性以‘星’为名。” “Star”是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>
【问题讨论】: