如何绑定下拉列表的选定值并将其分配给@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,它是无效的,因为它没有 存在于项目列表中。参数名称:值
答案 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;