asp.net中的联动菜单

目标达到的效果:两个下拉框,第二个跟随第一个变化而变化,使用客户端脚本JavaScript在ASP.NET环境下实现。

 

第一步:建立JavaScript脚本:

在Page_Load中建立并注册这个js脚本:

 

string scriptKey = "MenuChange";

if (!Page.IsStartupScriptRegistered(scriptKey) &&  !Page.IsPostBack)

{

       string scriptBlock = 

              @"<script language=""JavaScript"">

                <!--

                       function InitBigClass()

                       {

                              bigclass  = new Array();

                              bigclass[0]  = new Array();

                              bigclass[0][0]  = '0';

                              bigclass[0][1]  = '全部论坛';

 

                              bigclass[1]  = new Array();

                              bigclass[1][0]  = '3';

                              bigclass[1][1]  = 'Web 开发';

 

                              bigclass[2]  = new Array();

                              bigclass[2][0]  = '4';

                              bigclass[2][1]  = '软件工程/管理';

 

                       }

 

                     function InitSmallClass()

                     {

                            smallclass  = new Array();

 

                            smallclass[0]  = new Array();

                            smallclass[0][0]  = '301';

                            smallclass[0][1]  = 'ASP';

                            smallclass[0][2]  = '3';         // 此处与上面的大类对应

 

                            smallclass[1]  = new Array();

                            smallclass[1][0]  = '303';

                            smallclass[1][1]  = 'PHP';

                            smallclass[1][2]  = '3';

 

                            smallclass[2]  = new Array();

                            smallclass[2][0]  = '401';

                            smallclass[2][1]  = '软件工程';

                            smallclass[2][2]  = '4';

 

                            smallclass[3]  = new Array();

                            smallclass[3][0]  = '403';

                            smallclass[3][1]  = '软件测试';

                            smallclass[3][2]  = '4';

                     }

 

                     InitBigClass();

                     InitSmallClass();

 

                     function changeitem(myfrm)               // 主要js的函数!!!

                     {      

                            var SelectedBigId,i,j;

                            for (i= myfrm.smallclassid.options.length-1;i>=0  ;--i)      

                            {

                                   myfrm.smallclassid.options[i] = null; 

                            }

              SelectedBigId = myfrm.bigclassid.options[myfrm.bigclassid.selectedIndex].value;

                            j = 0;       

                            for (i=0 ;i< smallclass.length ;i++)      

                            {

                                   if (SelectedBigId == smallclass[i][2])

                                   {

                     myfrm.smallclassid.options[j] = new Option(smallclass[i][1],smallclass[i][0]); 

                                          ++j;

                                   }

                            }

                     }

 

              //-->

              </script> ";

 

       Page.RegisterClientScriptBlock(scriptKey, scriptBlock);      // 注册这个脚本

}

 

第二步:在页面中加入两个<select>

<select id="bigclassid" οnchange="javascript:changeitem(document.Form1);" name= "bigclassid"> (Form的id为Form1)

<option value="0" selected>全部论坛</option>

</select>

<select id="smallclassid" name="smallclassid">

<option>请您选择</option>

</select>

注意select的id和name属性要与上面的js相一致。

 

第三步:在Button_OnClick()中加入代码

int i;

for(i=0;i<Request.Form.Count;i++)

       if(Request.Form.AllKeys[i].ToString()=="smallclassid")

              break;                          // form中找到这个select (根据id或者name查找)

int SelectValue = Request.Form.GetValues(i)[0];   //  这个值就是 select 选中的值
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现 select 标签的联动,可以使用 ASP.NET 的 AJAX 技术。 首先,在页面上添加两个 select 标签,分别为父级 select 和子级 select。然后,在父级 select 的 onchange 事件,发送 AJAX 请求到服务器,获取子级 select 的数据,并根据父级 select 的选值来动态生成子级 select 的选项。 以下是一个简单的示例代码: ```html <!-- 父级 select --> <select id="parentSelect" onchange="loadChildSelect()"> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <!-- 子级 select --> <select id="childSelect"> <option value="">请选择</option> </select> <script type="text/javascript"> function loadChildSelect() { // 获取父级 select 的选值 var parentValue = document.getElementById("parentSelect").value; if (parentValue === "") { // 如果未选择任何选项,则清空子级 select document.getElementById("childSelect").innerHTML = '<option value="">请选择</option>'; return; } // 发送 AJAX 请求,获取子级 select 的数据 var xhr = new XMLHttpRequest(); xhr.open("GET", "GetChildSelectData.aspx?parentValue=" + parentValue, true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 根据父级 select 的选值和获取到的数据,动态生成子级 select 的选项 var childOptions = xhr.responseText; document.getElementById("childSelect").innerHTML = childOptions; } }; xhr.send(); } </script> ``` 在服务器端,可以创建一个类似于 GetChildSelectData.aspx 的页面,用于接收 AJAX 请求,并返回子级 select 的数据。在该页面,可以根据传递过来的父级 select 的选值,查询数据库或其他数据源,获取子级 select 的数据,并将数据以 HTML 代码的形式返回给客户端。以下是一个简单的示例代码: ```csharp protected void Page_Load(object sender, EventArgs e) { string parentValue = Request.QueryString["parentValue"]; string childOptions = ""; // 根据父级 select 的选值,查询数据库或其他数据源,获取子级 select 的数据 // 将子级 select 的选项以 HTML 代码的形式拼接成一个字符串 childOptions Response.Write(childOptions); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值