求救:两个很菜的问题,郁闷了两天。。。。
我采用code-behind,代码如下:(a.asp.cs)
public class ProductOut : System.Web.UI.Page
{
...
protected String strConnect;
protected System.Data.OleDb.OleDbConnection objConnect;
...
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
// 问题1:strConnect本来是希望从ascx中得到
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
MapPath("DB\\TMEDB.mdb");
objConnect = new OleDbConnection(strConnect);
}
....
public void delete(Object o,ImageClickEventArgs e)
{
try
{
objConnect.Open(); //问题2:这里产生异常:connectString为null
}
catch(Exception objError)
{
Response.Write(objError.Message);
}
}
}
问题1:
strConnect本来是希望从一个用户控件得到的。我的用户控件(a.ascx文件)如下:
<%@Control Language="c#" ClassName="c"%>
<script language="c#" runat="server">
public String JetConnectionString
{
get
{
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
MapPath("DB\\TMEDB.mdb");
}
}
</script>
我在a.aspx文件的头部添加了<%@ Reference Control="a.ascx"%>
如果我在a.aspx.cs使用
Control c1=LoadControl("a.ascx");
this.Controls.Add(c1);
strConnect = (c)c1.OLEDBConnectionString;
会编译出错:c未声明。可是在ascx中我已经说明了编译成类c啊,
<%@Control Language="c#" ClassName="c"%>
我的ascx未采用code-behind,而aspx采用了code-behind,
在a.asp.cs中如何访问ascx中的属性呢?
问题2:
其中delete是我点击一个button产生的事件处理函数,可是当我点击该button时
产生一个异常:connectString为null,我已经在页面首次加载时new了一个objConnect,
为什么objConnect.connectString还为空呢?如果我不判断if(!Page.IsPostBack),就
不会有这个异常,可是这样每次回送都会new一个OleDbConnection对象,这样导致资源
浪费,这种情况下我应该怎么做呢?