使用Ajax创建下拉控件

时间:2011-08-10 22:43:51

标签: c# .net ajax

到这篇文章的日期,我已经花了10多种染料,但无法解决我的问题:(

我有一个db表位置它有3个文件LocID,locName,locParent。

我想创建一个DropDownList,其中包含所有主要位置,例如国家/地区。 然后当用户选择一个位置(例如一个国家) 该国家/地区的所有城市都会在动态创建的下拉列表中重新加载。

此页面必须包含无限的子类别。 该解决方案也必须位于AjaxC#

1 个答案:

答案 0 :(得分:0)

您需要将AjaxExtensions(附带.net 3.5)添加到.net 2.0 apps http://www.asp.net/ajax

这将需要页面上的ToolKitScriptManager

在页面上放置三个下拉列表。将它们命名为ddlCountry,ddlCity和ddlMainLocation。

可选择将两个“子”下拉列表放在设置为不可见的面板中。

在页面加载时,使用SqlDataBase Reader

从数据库中提取位置信息

使用阅读器,遍历记录并将项目添加到下拉列表

E.g。

    // Create a command object and set it to run a stored procedure that gets the countries from the database
SqlDataReader rdr = cmd.ExecuteQuery();
try
{
    ddlCountries.items.clear();
    While (rdr.read())
    {
        // Text to display, Common Data Item
        ddlCountries.items.add(new ListItem(rdr("CountryName").toString(),rdr("CountryCode").ToString());
    }
}
catch()
{
    // do something with your error
}

在ddlCountries下拉列表中添加以下属性:

  1. OnSelectedINdexChanged =“ddlCountries_SelectedIndexChanged”
  2. AutoPostback =“true”
  3. (1)将对要更改的索引执行命令 (2)当项目被更改时将触发回发

    然后,ddlCountries_SelectedIndexChanged事件方法将在数据库中查询属于所选国家/地区代码的相关城市(或使值成为包含城市的表的外键)

    现在测试代码以确保回发导致城市列表填充数据。此时,它是一个普通的ASP.Net页面,带有回发。要在标记中完成部分回发,请在下拉列表周围添加更新面板。它看起来如下:

    <asp:UpdatePanel runat="server" id="upnlDropdowns" UpdateMode="Conditional">
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="ddlCountries" EventName="OnSelectedIndexChanged" />
                            </Triggers>
    <ContentTemplate>
    <!--... Your Drop downs and any code to be Ajaxified .../-->
    </ContentTemplate>
    </asp:UpdatePanel>
    

    再次测试并确保一切仍然有效。如果是这样,那么您可以添加第三个下拉列表。这次它将由城市下拉列表中选定的索引更改事件填充。

    一旦完成所有工作,您可以通过添加updateprogress来添加令人惊叹的因素,该updateprogress扩展了updatePanel以显示工作图像。

    祝你好运!