DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ドロップダウンリスト内項目に引継情報を初期設定させたい

環境/言語:[ASP.NET 2.0  VisualStudio2005(VB)  SqlServer2008]
分類:[ASP.NET]

皆様

いつも参考にさせていただいております。
SQLで取得した結果と画面引継情報をドロップダウン項目の初期値としたいのですがエラー画面が表示され、悩んでおります。アドバイスをお願い致します。

1)Me.ddSZipMst.DataTextField=引継情報.Value.Trimとか
2)Me.ddSZipMst.SelectedValueで試しているのですが、
デバッグモードで左辺の項目を確認すると引継情報が設定されておりません。

■エラー表示内容
1)DataBinding: 'System.Data.DataRowView' には 兵庫県 という名前のプロパティは含まれません。
2)項目一覧に存在しないため、'ddSZipMst' に SelectedValue を指定することは無効です。パラメータ名: value

SQLからの取得した結果には47都道府県名が設定させれております。

VB.NET側のForm_Load処理ロジックに
If Page.PreviousPage.IsCrossPagePostBack Then


を記述し、ASP側でSQLが実行され、その後、VB.NET側で引き継いだ都道府県名を設定する。としたいのですが、クライアント処理、サーバ側処理が混乱しているのかと思います。解決に結びつかずご教示頂きたく、よろしくお願いします。

[ASP内のコーディング]

<asp:DropDownList ID="ddSZipMst" runat="server" DataSourceID="dsSZipMst"
DataTextField="ZipNm" DataValueField="ZipNm"
AppendDataBoundItems="True">
</asp:DropDownList>
<asp:SqlDataSource ID="dsSZipMst" runat="server"
ConnectionString="<%$ ConnectionStrings:ENJ-STAGE1_crm2 %>"
SelectCommand="SELECT DISTINCT Ltrim(Rtrim([都道府県名称])) as ZipNm from [s_zip_mst] ORDER BY ZipNm">
</asp:SqlDataSource>

※Vb.net側でのコーディングをコメントあうとするデータは取得できております。
[ASP画面でのHTML生成情報]
<select name="ctl00$body$ddSZipMst" id="ctl00_body_ddSZipMst">
<option value="愛知県 ">愛知県 </option>
<option value="愛媛県 ">愛媛県 </option>
<option value="茨城県 ">茨城県 </option>
<option value="岡山県 ">岡山県 </option>
■No27889 に返信(はちまきさんの記事)

> 1)Me.ddSZipMst.DataTextField=引継情報.Value.Trimとか
> 1)DataBinding: 'System.Data.DataRowView' には 兵庫県 という名前のプロパティは含まれません。 

DropDownList.DataTextField は DropDownList に表示するプロパティ名を設定する
ものです。データソースのプロパティ名を設定する必要があります。
aspx には ZipNm プロパティを参照するように記述されています。書き換えてはいけません。

<asp:DropDownList ID="ddSZipMst" runat="server"
  DataSourceID="dsSZipMst"
  DataTextField="ZipNm"
  DataValueField="ZipNm" 
  AppendDataBoundItems="True">

> 2)Me.ddSZipMst.SelectedValueで試しているのですが、
> 2)項目一覧に存在しないため、'ddSZipMst' に SelectedValue を指定することは無効です。パラメータ名: value 

Page.Load イベントで DropDownList.SelectedValue に値を設定しようとされているのです
よね。Page.Load イベントは DropDownList.DataBound イベントよりも早いタイミングに
発生します。そのため DropDownList.SelectedValue に設定しようとした値が項目一覧に存在
しないということになるのではないかと思います。

DropDownList.DataBound イベントで DropDownList.SelectedValue に値を設定してみて
はいかがでしょうか。
アドバイス、ご教示有難う御座いました。
解決いたしました。ASP側で処理が終わってからLoad処理が実施される。
と思いこんでおりました。

Page.Load イベントで DropDownList.SelectedValue に値を設定しようとされているのですよね。
Page.Load イベントは DropDownList.DataBound イベントよりも早いタイミングに
発生します。そのため DropDownList.SelectedValue に設定しようとした値が項目一覧に存在しないということになるのではないかと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板