2011-12-05 28 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からランクドロップダウンリストを作成することですが、このメソッドを使用して、ランクdropwonリストの選択項目に行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> 

答えて

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に何かで表示される場合は、Itemsコレクションの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を設定すると言っていませんでした。ドロップダウンリストにデータが入力されていますか?その場合は、Webページのソースを表示し、選択要素として生成されたHTMLを投稿してください。 – Nikki9696

+0

htmlのddlは次のとおりです。