初学.net,并且正在做项目!写了一段代码,大家给指导指导,谢了先!// Data access layer code.
namespace PowerCRM.DAL
{
public class Functions
{
public DataSet GetFunctions()
{
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnString"]);
conn.Open(); DataSet ds;
// SqlHelper是Data Access Application Block(MS开源组件)中的一个类,ExecuteDataset是该类中的静态方法。
// 如果没过DAAB的朋友可以认为此处就是一个完成了向DataSet填充数据的过程就好了。
ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, "select * from t_menu"); conn.Close(); return ds;
}
}
}// Business facade layer code.
namespace PowerCRM.BFL
{
public class Functions
{
DataSet menuds; public String GetFunctions()
{
int menuid = 1;
String result = "<root>";
DAL.Functions func = new PowerCRM.DAL.Functions();
menuds = func.GetFunctions(); ReadFunctions(menuds, "0", menuid, ref result); result += "</root>"; return result;
} private void ReadFunctions(DataSet ds, String parentid, int menuid, ref String result)
{
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "parentid='" + parentid + "'";
dv.Sort = "currentid ASC";
if (dv.Count == 0) return;
foreach(DataRowView drv in dv)
{
result += "<menuitem id='" + menuid.ToString() + "'" +
" title='" + drv["menutext"].ToString() + "'" +
" image='" + drv["menuimage"].ToString() + "'" +
" url='" + drv["menuurl"].ToString() + "'" +
" >"; ReadFunctions(menuds, drv["currentid"].ToString(), ++menuid, ref result);
result += "</menuitem>";
}
return;
}
}
}// Web layer code.
private void Page_Load(object sender, System.EventArgs e)
{
Functions functions = new Functions(); // SolpartMenu1是一个开源菜单控件(Solution Partners Hierarchical Menu WebControl)
// MenuData = XML格式的字符串!
SolpartMenu1.SystemImagesPath = BasePage.UrlBase + "/images/";
SolpartMenu1.MenuData = functions.GetFunctions();
}菜单控件所需XML格式如下:
<root>
<menuitem ...>
<menuitem ...>
</menuitem>
<menuitem ... />
</root>数据库t_menu表的结构如下:
parentid varchar 50
currentid varchar 50
menutext varchar 50
menuimage varchar 50 null
menuurl varchar 50 null不知道这样写可不可以,有没有什么隐患?
如果数据层或表现层出现问题怎么通知Web层?
MSDN上说在ASP.NET中用异常处理会很耗资源,那么应该用什么方法解决conn.open()异常之类的问题?
还有DataSet和DataView之类的对象用完之后,是否需要释放?
namespace PowerCRM.DAL
{
public class Functions
{
public DataSet GetFunctions()
{
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnString"]);
conn.Open(); DataSet ds;
// SqlHelper是Data Access Application Block(MS开源组件)中的一个类,ExecuteDataset是该类中的静态方法。
// 如果没过DAAB的朋友可以认为此处就是一个完成了向DataSet填充数据的过程就好了。
ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, "select * from t_menu"); conn.Close(); return ds;
}
}
}// Business facade layer code.
namespace PowerCRM.BFL
{
public class Functions
{
DataSet menuds; public String GetFunctions()
{
int menuid = 1;
String result = "<root>";
DAL.Functions func = new PowerCRM.DAL.Functions();
menuds = func.GetFunctions(); ReadFunctions(menuds, "0", menuid, ref result); result += "</root>"; return result;
} private void ReadFunctions(DataSet ds, String parentid, int menuid, ref String result)
{
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "parentid='" + parentid + "'";
dv.Sort = "currentid ASC";
if (dv.Count == 0) return;
foreach(DataRowView drv in dv)
{
result += "<menuitem id='" + menuid.ToString() + "'" +
" title='" + drv["menutext"].ToString() + "'" +
" image='" + drv["menuimage"].ToString() + "'" +
" url='" + drv["menuurl"].ToString() + "'" +
" >"; ReadFunctions(menuds, drv["currentid"].ToString(), ++menuid, ref result);
result += "</menuitem>";
}
return;
}
}
}// Web layer code.
private void Page_Load(object sender, System.EventArgs e)
{
Functions functions = new Functions(); // SolpartMenu1是一个开源菜单控件(Solution Partners Hierarchical Menu WebControl)
// MenuData = XML格式的字符串!
SolpartMenu1.SystemImagesPath = BasePage.UrlBase + "/images/";
SolpartMenu1.MenuData = functions.GetFunctions();
}菜单控件所需XML格式如下:
<root>
<menuitem ...>
<menuitem ...>
</menuitem>
<menuitem ... />
</root>数据库t_menu表的结构如下:
parentid varchar 50
currentid varchar 50
menutext varchar 50
menuimage varchar 50 null
menuurl varchar 50 null不知道这样写可不可以,有没有什么隐患?
如果数据层或表现层出现问题怎么通知Web层?
MSDN上说在ASP.NET中用异常处理会很耗资源,那么应该用什么方法解决conn.open()异常之类的问题?
还有DataSet和DataView之类的对象用完之后,是否需要释放?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货