0

如何绑定下拉列表的选定值并将其分配给@TimeZone,因为当我选择它时,@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 它为空。

我试过

 <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 回答