动态为DropDownList添加Item

本文介绍如何使用ASP.NET MasterPage实现在子页面输入内容后动态更新主页面下拉列表的功能,通过定义接口和利用Session保存数据,实现了跨页面的数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看演示:

 

Insus.NET在MasterPage放置了一个DropDownList和一个Button控件,然后在Default.aspx放置一个TextBox。从上面的动画中可以看到,在TextBox输入文字,它会动态添加至MasterPage的DropDownList控件中。

实现过程,首先写一个接口:

ExpandedBlockStart.gif IGetable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

///   <summary>
///  Summary description for IGetable
///   </summary>
namespace Insus.NET
{
     public  interface IGetable
    {
         string TextBoxValue
        {
             get;
        }
    }
}

 

接下来,新建MasterPage:

InsusMasterPage.master:

ExpandedBlockStart.gif InsusMasterPage.master
<% @ Master Language = " C# "  AutoEventWireup = " true "  CodeFile = " InsusMasterPage.master.cs "  Inherits = " InsusMasterPage "   %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
     < title ></ title >   
</ head >
< body >
     < form  id ="form1"  runat ="server" >
     < div >
         < asp:DropDownList  ID ="DropDownList1"  runat ="server"  Width ="100" >
         </ asp:DropDownList >
         < asp:Button  ID ="Button1"  runat ="server"  Text ="Add Item"  OnClick ="Button1_Click"   />
         < asp:ContentPlaceHolder  id ="ContentPlaceHolder1"  runat ="server" >
        
         </ asp:ContentPlaceHolder >
     </ div >
     </ form >
</ body >
</ html >

 

InsusMasterPage.master.cs代码,重点部分已经有注释,难度应该不大:

ExpandedBlockStart.gif InsusMasterPage.master.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public  partial  class InsusMasterPage : System.Web.UI.MasterPage
{
    // Insus.NET:宣告一个泛型,将存储输入的数据
    List< string> list =  new List< string>();

     protected  void Page_Load( object sender, EventArgs e)
    {
         if (!IsPostBack)
        {
            Data_Binding();
        }
    }

     private  void Data_Binding()
    {
         this.DropDownList1.DataSource = list;
         this.DropDownList1.DataBind();

    }

     protected  void Button1_Click( object sender, EventArgs e)
    {
         // Insus.NET:把page转为接口,并取属性
         string v = ((IGetable) this.Page).TextBoxValue;

        // Insus.NET:判断Session是否为空
         if (Session[ " db "] !=  null)
        {
            // Insus.NET:如果不为空,直接从Session取出
            list = (List< string>)Session[ " db "];
        }
         else
        {
             // Insus.NET:如果为空,new一个实例
            list =  new List< string>();
        }

        // Insus.NET:把输入值加入泛型
        list.Add(v);
       
         // Insus.NET:存入Session
        Session[ " db "] = list;

        Data_Binding();
    }
}

 

最后,是Aspx的代码:

Default.aspx:

ExpandedBlockStart.gif View Code
<% @ Page Title = ""  Language = " C# "  MasterPageFile = " ~/InsusMasterPage.master "  AutoEventWireup = " true "  CodeFile = " Default.aspx.cs "  Inherits = " _Default "   %>

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="ContentPlaceHolder1"  Runat ="Server" >
     < asp:TextBox  ID ="TextBox1"  runat ="server" ></ asp:TextBox >
</ asp:Content >

 

Default.aspx.cs:

ExpandedBlockStart.gif View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public  partial  class _Default : System.Web.UI.Page,IGetable
{
     protected  void Page_Load( object sender, EventArgs e)
    {

    }

     // Insus.NET:实现接口
     public  string TextBoxValue
    {
         get {
             return  this.TextBox1.Text;
        }
    }
}

 

好了,非常简单的例子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值