日期:2014-05-18 浏览次数:20625 次
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);
}
}
//试试
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostback)
{
//生成下拉列表框的代码
}
}
------解决方案--------------------
不管储存在哪里
要放在dropdownlist的Init事件里
否则就要在Page_load里调用
这样麻烦 还要判断!IsPostBack
------解决方案--------------------
里面有一个属性,是autopostback,请设置true
------解决方案--------------------
你这两个函数是怎么调用的?单步调试看看是否有数据
------解决方案--------------------
指定下数据源的DataTextField和DataValueField再帮顶
如果这样不行的话就要看你是不是有数据了
------解决方案--------------------
如果没有效果,第一检查是否执行了代码。
如果执行了,就进入调试状态,看看是否执行if (rowList.Length <= 0) return;
导致下面的代码没有执行。
------解决方案--------------------
为什么要用后台代码呢?直接写在属性里面不行么?
------解决方案--------------------
设置断点单步调试。