我在前台放了一个DropDownList控件,想要页面首次加载时,显示/,用于根目录
在后台用这段代码来实现,但是得不到结果,页面首次加载时,显示空,里面什么也没有,
注意:/不是存储在数据库中。
后台代码:public void ShowDirectory(DropDownList dirList, int nParentID)
    {
        DataTable dataTable = SystemTools.ConvertDataReaderToDataTable(GetDirectorys());
        dirList.Items.Clear();
        DataRow[] rowList = dataTable.Select("ParentID='-1'");
        if (rowList.Length <= 0) return;
        //创建、添加新节点
        dirList.Items.Add(new ListItem("/", rowList[0]["DirID"].ToString()));
        //创建其他节点
        CreateChildNode(dirList, dataTable, Int32.Parse(rowList[0]["DirID"].ToString()), "/");
    }
    public void CreateChildNode(DropDownList dirList, DataTable dataTable, int nParentID, string sParentName)
    {
        DataRow[] rowList = dataTable.Select("ParentID='" + nParentID.ToString() + "'", "CreateDate DESC");
        foreach (DataRow row in rowList)
        {
            string sName = sParentName + row["Name"].ToString() + "/";
            //创建新节点
            dirList.Items.Add(new ListItem(sName, row["DirID"].ToString()));
            //递归调用,创建其他节点
            CreateChildNode(dirList, dataTable, Int32.Parse(row["DirID"].ToString()), sName);
        }
    }

解决方案 »

  1.   


    //试试
    protected void Page_Load(object sender,EventArgs e)
    {
      if(!IsPostback)
      {
        //生成下拉列表框的代码
      }
    }
      

  2.   

    不管储存在哪里
    要放在dropdownlist的Init事件里
    否则就要在Page_load里调用
    这样麻烦 还要判断!IsPostBack
      

  3.   

    里面有一个属性,是autopostback,请设置true
      

  4.   

    页面初始化代码:private int nDirID = -1;
    private int nParentID = -1;
    protected void Page_Load(object sender, EventArgs e)
        {
            ///获取参数DirID的值
            if (Request.Params["DirID"] != null)
            {
                if (Int32.TryParse(Request.Params["DirID"].ToString(), out nDirID) == false)
                {
                    return;
                }
            }
            if (Request.Params["ParentID"] != null)
            {
                if (Int32.TryParse(Request.Params["ParentID"].ToString(), out nParentID) == false)
                {
                    return;
                }
            }
            if (!IsPostBack)
            {   ///显示目录列表的信息
                BindDirectoryData();
                if (nDirID > -1)   ///存在DirID > -1的情况
                {
                    BindDirectoryData(nDirID);
                    SystemTools.SetListBoxItem(DirList, nDirID.ToString());
                    return;
                }
                if (nDirID <= -1 && nParentID > -1)   ///存在DirID > -1的情况
                {
                    BindDirectoryData(nParentID);
                    SystemTools.SetListBoxItem(DirList, nParentID.ToString());
                    return;
                }
                if (DirList.Items.Count > 0)
                {
                    BindDirectoryData(Int32.Parse(DirList.SelectedValue));
                }
            }
        }
        private void BindDirectoryData()
        {
            Disk disk = new Disk();
            disk.ShowDirectory(DirList,-1);
            if (DirList.Items.Count > 0)
            {
                DirList.SelectedIndex = 0;
            }
            disk.ShowDirectory(MoveDirList,-1);
        }
        private void BindDirectoryData(int nParentID)
        {
            IDisk disk = new Disk();
            SqlDataReader dr = disk.GetDirectoryFile(nParentID);
            DiskView.DataSource = dr;
            DiskView.DataBind();
            dr.Close();
            ReturnBtn.Visible = nParentID > 0 ? true : false;
        }
      

  5.   

    例子
    void Page_Load(Object sender, EventArgs e) {
           if (!IsPostBack) {
              RadioButtonList1.DataSource = CreateDataSource();
              RadioButtonList1.DataTextField="StringValue";    //你少了这句和下句了
              RadioButtonList1.DataValueField="CurrencyValue";
              RadioButtonList1.DataBind();
           }
        }
      

  6.   

    老兄 我的是DropDownList控件...
      

  7.   

    如果没有效果,第一检查是否执行了代码。如果执行了,就进入调试状态,看看是否执行if (rowList.Length <= 0) return;
    导致下面的代码没有执行。