首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充asp:dropdownlist - VS 2008

问填充asp:dropdownlist - VS 2008
EN

Stack Overflow用户
提问于 2008-11-18 20:10:38
回答 3查看 1.2K关注 0票数 1

我有两个DDL的表单,名为

州和城市

状态:

代码语言:javascript
复制
<asp:UpdatePanel ID="States" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="States"EventName="SelectedIndexChanged" />
        </Triggers>
        <ContentTemplate>
            <asp:DropDownList ID="States" runat="server"
            AutoPostBack="True" DataSourceID="StatesObjectDataSource" 
            AppendDataBoundItems="true" 
                onselectedindexchanged="States_SelectedIndexChanged">
            <asp:ListItem Value="-1" Text="- None -"/>    
            </asp:DropDownList>
            <asp:ObjectDataSource ID="StatesObjectDataSource" runat="server" 
                onselecting="StatesObjectDataSource_Selecting" 
                SelectMethod="GetStates" 
                TypeName="Something">
            </asp:ObjectDataSource>
        </ContentTemplate>
    </asp:UpdatePanel>

城市:

代码语言:javascript
复制
<asp:DropDownList ID="Cities" runat="server">
        </asp:DropDownList>

当他们选择一个州时,我想用该州的所有城市填充Cities DDL。

在后面的代码中,我能够获得

代码语言:javascript
复制
States_SelectedIndexChanged(object sender, EventArgs e)

我试着用这个来填充城市DDL

代码语言:javascript
复制
Cities.Items.Add(new ListItem(city,city));

但是,我没有看到我的城市DDL被填充

EN

回答 3

Stack Overflow用户

发布于 2008-11-18 22:52:21

我建议在ViewState中创建一个私有属性来保存物理对象的集合。然后将对象添加到该列表中,然后将对象列表数据绑定到下拉列表中。

页后

代码语言:javascript
复制
<asp:DropDownList runat="server" ID="ddlCity" DataValueField="Key" DataTextField="Value">
</asp:DropDownList>

代码隐藏

代码语言:javascript
复制
private List<KeyValuePair<string, string>> ListData
{
    get { return (List<KeyValuePair<string, string>>) (ViewState["ListData"] ??     
                 (ViewState["ListData"] = new List<KeyValuePair<string, string>>())); }
    set { ViewState["ListData"] = value; }
}

protected void States_SelectedIndexChanged_SelectedIndexChanged(object sender, EventArgs e)
{
  ListData.Add(new KeyValuePair<string, string>(ddlCitys.SelectedValue, ddlCitys.SelectedValue));
  ddlCitys.DataSource = ListData;
  ddlCitys.DataBind();
}

get语句还在ListData属性上使用延迟加载,因此在访问列表时不会遇到空引用异常。

票数 2
EN

Stack Overflow用户

发布于 2008-11-18 23:01:01

如果可能的话,我建议使用CascadingDropDown Extender而不是UpdatePanel。重新发明这个轮子是没有用的,而且Toolkit控件使用web服务而不是部分回发(快得多)。

票数 1
EN

Stack Overflow用户

发布于 2008-11-18 23:05:43

将您的城市DropDownList放在更新面板中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/299969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档