0

ドロップダウン リストで選択した値をバインドして @TimeZone に割り当てるにはどうすればよいですか?

これが私のコードです:

ページの読み込み内に、ドロップダウンに値を割り当てる次のコードがあります。

ddlTimeZone.DataSource = from p in TimeZoneInfo.GetZones()
                         select new { p.Id };
ddlTimeZone.DataTextField = "Id";
ddlTimeZone.DataValueField = "Id";             
ddlTimeZone.DataBind();

次に、私の .aspx ファイル内には、次のものがあります。

<EditItemTemplate>
    <asp:DropDownList ID="ddlTimeZone" runat="server">
    </asp:DropDownList>
</EditItemTemplate>

…………

 InsertCommand="INSERT INTO [Companies] ([TimeZone]) VALUES ( @TimeZone)"

 <InsertParameters>                 
        <asp:Parameter Name="TimeZone" Type="String" />           
 </InsertParameters>

繰り返しますが、私が知る必要があるのは、ドロップダウン リストで選択した項目の値を現在のように @TimeZone に割り当てる方法です。@TimeZone は null です。

私は試した

 <asp:DropDownList ID="ddlTimeZone" SelectedValue='<%# Bind("TimeZone") %>' runat="server">
 </asp:DropDownList>

しかし、それは次のエラーメッセージを出しました:

「ddlTimeZone」には、アイテムのリストに存在しないため無効な SelectedValue があります。パラメータ名: 値

4

1 に答える 1

0

によって返される<%# Bind("TimeZone") %>値は、ID TimeZoneInfo.GetZones() でバインドしているため、ドロップダウンの値には存在しません。データ ソースに存在する ID を指定します。

このステートメントをコード ビハインドに入れます。

ddlTimeZone.SelectedValue = "idtthatexists";

編集: GetZones() によって返されるデータ ソースに TimeZone があるという仮定に基づいています。

ddlTimeZone.DataSource = from p in TimeZoneInfo.GetZones()
                         select new { p.Id, p.TimeZone };
ddlTimeZone.DataTextField = "Id";
ddlTimeZone.DataValueField = "TimeZone";   
ddlTimeZone.DataBind();
ddlTimeZone.Items.FindByText("SomeTextShowInDropDownItems").Selected = true;
于 2012-11-27T15:32:47.807 に答える