初学.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之类的对象用完之后,是否需要释放?