2012-11-27 70 views
0

如何将下拉列表的选定值绑定并将其指定给@TimeZone,因为当我选择它时,@TimeZone为null。DropdownList获取SelectedValue

这里是我的代码:

在我的页面加载,我有以下的代码分配值下拉:

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

返回的值在下拉列表中不存在,因为您正在使用ID TimeZoneInfo.GetZones()绑定它。给它一些在数据源中退出的标识。

将此语句置于代码后面。

ddlTimeZone.SelectedValue = "idtthatexists"; 

编辑:此基础上,你必须的时区数据源通过GetZones()

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; 
+0

谢谢返回,但它是怎么回事绑定到时区,虽然假设? –

+0

您需要选择您绑定的属性。如果您想选择时区,请在ddlTimeZone.DataTextField =“timezone”上绑定时区;并使用SelectText代替SelectedValue – Adil

+0

对不起Adil,你可以做一个小例子。我不知道我在哪里使用ddlTimeZone.DataTextField等 –

相关问题