DropdownList获取SelectedValue

时间:2012-11-27 15:28:10

标签: c# asp.net

如何绑定下拉列表的选定值并将其分配给@TimeZone,因为当我选择它时,@ TimeZone为null。

这是我的代码:

在我的页面加载中,我有以下代码为下拉列表赋值:

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,它是无效的,因为它没有   存在于项目列表中。参数名称:值

1 个答案:

答案 0 :(得分: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;