第一步,先用index.aspx页创建框架。
前台代码如下:
<frameset rows="24%,76%" border="0" frameSpacing="0" bordercolor="#a2ff 2f " frameBorder="1">
<frame name="top" noresize="true" src="top.aspx">//顶部框架
<frameset cols="26%,74%" bordercolor="#a2ff 2f " frameBorder="1">
<frame name="left" noresize="true" src="left.aspx">//左边框架
<frame name="main" noresize="true" src="main.aspx">//右边主页面
</frameset>
</frameset>
第二步,分别设计top.aspx,left.aspx页面,main.aspx页面主要用以做其他页面的target。
Top.aspx页面,主要是一个table中放一个datalist,然后里面用个绑定列,做个超级链接列。
前台:
<asp:datalist id="DataList1" runat="server" Width="368px" Height="27px"
DataKeyField="ModuleID" ShowHeader="False" ShowFooter="False" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:HyperLink id="HyperLink1" runat="server" ForeColor=#ff00ff Text='<%#DataBinder.Eval(Container.DataItem,"ModuleName")%> ' Target='left' NavigateUrl='<%#DataBinder.Eval(Container.DataItem,"ModuleUrl")%>' Width=90>
</asp:HyperLink>
</ItemTemplate>
</asp:datalist>
后台是让这个datalist绑定到数据库中去,
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
SqlConnection con=new SqlConnection("server=.;database=FrameTest;uid=sa;pwd=sa");
con.Open();
SqlCommand cmd=new SqlCommand("select * from Module",con);
SqlDataReader sdr=cmd.ExecuteReader();
this.DataList1.DataSource=sdr;
this.DataList1.DataBind();
sdr.Close();
con.Close();
}
Left.aspx页面
前台:
<script language="javascript">
function window.onload()
{
var strModuleNo = document.Form1.TextBox1.value;
if(strModuleNo == "10000")//客户管理
{
parent.main.location.href = "AddCustomer.aspx";
}
if(strModuleNo == "10002")//系统维护
{
parent.main.location.href = "UpdatePwd.aspx";
}
if(strModuleNo == "10005")//字典
{
parent.main.location.href = "AddContactType.aspx";
}
}
</script>
这个脚本的作用是,选择这个模块后,就自动让main页面加载一个页面。
这个页面主要是用了treeview控件。
Left.aspx后台代码:
public class left : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
static DataSet ds;
protected System.Web.UI.WebControls.Label lblModuleID;
protected System.Web.UI.WebControls.TextBox TextBox1;
private string strModuleNo="";
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
try
{
strModuleNo = Request.QueryString[0].ToString();
}
catch(Exception ex)
{
strModuleNo = "10001";
}
// string strModuleID=Request.QueryString["ModuleNo"].ToString();//接收点击top.aspx中一项时的ModuleID;
//选出该摸板块的所有子项
SqlConnection con=new SqlConnection("server=.;database=FrameTest;uid=sa;pwd=sa");
con.Open();
SqlDataAdapter sda=new SqlDataAdapter();
sda.SelectCommand=new SqlCommand("select * from Privilege where ModuleID='"+strModuleNo+"'",con);
DataSet ds1=new DataSet();
sda.Fill(ds1);
ds=ds1;
con.Close();
this.initTree();
// this.lblModuleID.Text=strModuleNo;
this.TextBox1.Text=strModuleNo;
}
}
//动态初始化数视图
private void initTree()
{
TreeNode tNode = new TreeNode();
tNode.ID = "100000";
tNode.Text = "栏目树";
this.TreeView1.Nodes.Add(tNode);
createChildNode(tNode,"100000");
}
private void createChildNode(TreeNode node,string strParentNo)
{
DataRow[] Rows = ds.Tables[0].Select("ParentID='"+strParentNo+"'");
foreach(DataRow row in Rows)
{
TreeNode childNode = new TreeNode();
childNode.ID = row["PrivilegeID"].ToString();
childNode.Text = row["PrivilegeName"].ToString();
childNode.NavigateUrl = row["PrivilegeUrl"].ToString();
childNode.Target = "main";
node.Nodes.Add(childNode);
createChildNode(childNode,row["PrivilegeID"].ToString());
}
}
}
基本代码就这些吧,此外这个例子用到的两张表是Module,Privilege,字段分别是
Module表 ModuleID ModuleName ModuleUrl
10000 客户管理 left.aspx?ModuleNo=10000
Privilege表 PrivilegeID PrivilegeName ModuleID PrivilegeUrl ParentID
100000 栏目树
100001 客户管理 10000 100000
100002 添加客户 10000 AddCustomer.aspx 100001
100003 查询客户 10000 QuerryCustomer.aspx 100001