private void Page_Load(object sender, System.EventArgs e)
{
if(Context.User.Identity.IsAuthenticated)
{
if(!IsPostBack)
{
DataSet dataSet = role.GetRolePermissionModule(Int32.Parse(Session["RoleID"].ToString()),Session["DriveSchool"].ToString());
this.ViewState["PermissionList"] = dataSet;
AddTree("学员",(TreeNode)null);
}
}
}public void AddTree(string pName,TreeNode pNode)
{
DataSet ds= (DataSet)this.ViewState["PermissionList"];
DataView dvTree = new DataView(ds.Tables["PermissionList"]);
dvTree.RowFilter ="M_Name2='" + pName + "'";
foreach(DataRowView Row in dvTree)
{
TreeNode Node=new TreeNode();
if(pNode == null)
{ //添加根节点
Node.Text = Row["M_Name3"].ToString();
Menu.Nodes.Add(Node);
Node.Expanded=true;
AddTree(Row["M_Name3"].ToString(),Node);//再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["M_Name3"].ToString();
pNode.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Row["M_Name3"].ToString(),Node);//再次递归
}
}
}
/////////////////////////////////////
总是提示说: DataView dvTree = new DataView(ds.Tables["PermissionList"]);(这句出错)
未将对象引用设置到对象的实例。
不知道哪里错了???????????
{
if(Context.User.Identity.IsAuthenticated)
{
if(!IsPostBack)
{
DataSet dataSet = role.GetRolePermissionModule(Int32.Parse(Session["RoleID"].ToString()),Session["DriveSchool"].ToString());
this.ViewState["PermissionList"] = dataSet;
AddTree("学员",(TreeNode)null);
}
}
}public void AddTree(string pName,TreeNode pNode)
{
DataSet ds= (DataSet)this.ViewState["PermissionList"];
DataView dvTree = new DataView(ds.Tables["PermissionList"]);
dvTree.RowFilter ="M_Name2='" + pName + "'";
foreach(DataRowView Row in dvTree)
{
TreeNode Node=new TreeNode();
if(pNode == null)
{ //添加根节点
Node.Text = Row["M_Name3"].ToString();
Menu.Nodes.Add(Node);
Node.Expanded=true;
AddTree(Row["M_Name3"].ToString(),Node);//再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["M_Name3"].ToString();
pNode.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Row["M_Name3"].ToString(),Node);//再次递归
}
}
}
/////////////////////////////////////
总是提示说: DataView dvTree = new DataView(ds.Tables["PermissionList"]);(这句出错)
未将对象引用设置到对象的实例。
不知道哪里错了???????????
跟踪一下,看看ds.Tables[0].TableName是多少
// DataRowView drv;
TreeNode tmpNd;
string intId;
string mySql = "SELECT property_id P_ID,ProPerty_Desc p_name,property_level P_level,parent_property_id par_id FROM com_define_property_desc ";
mySql = mySql + "WHERE property_id = 9 OR parent_property_id = 9 AND enabled_flag = 'Y'";
//DataReader myds = OracleHelper.ExecuteReader(mySql);
//dv.Table =
try
{
DataTable tab = OracleHelper.GetDataTableOfRecord(mySql);
dv = tab.DefaultView; dv.RowFilter = "par_id = " + ParentId + "";
foreach( DataRowView drv in dv)
{
tmpNd = new TreeNode();
intId = drv["P_ID"].ToString();
tmpNd.ID = intId;
tmpNd.Text = drv["p_name"].ToString();
Nds.Add(tmpNd);
InitTree(Nds[Nds.Count - 1].Nodes,intId);//递归
if(intId == "0")
{
tmpNd.Expanded = true;
}
}
}
catch(Exception ex)
{
throw new Exception("",ex);
}我刚做的
{
上面那段内容
}
问题错在了这里:
Session["DriveSchool"]没有传过来!
DataSet dataSet = role.GetRolePermissionModule(Int32.Parse(Session["RoleID"].ToString()),Session["DriveSchool"].ToString());