文件内容如下
<%@ page Language="c#" Debug="true"%>
<%@ OutputCache Duration="1" VaryByParam="None"%>
<%@ import namespace="System"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%><script runat="server">public void Page_Load(Object o,EventArgs s)
{string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
OleDbConnection Conn= new OleDbConnection(ConnStr);
OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
DataSet MyDataSet=new DataSet();
adapter.Fill(MyDataSet);
MyDataSet.Tables[0].TableName="Article";
MyDataSet.Tables[1].TableName="AritcleClass";
MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["Article"].Columns["ClassID"],MyDataSet.Tables["AritcleClass"].Columns["ClassID"]);
ParentDataList.DataSource=MyDataSet.Tables[0];
ParentDataList.DataBind();
}
</script>
<html>
<body>
<asp:datalist id="ParentDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"ClassName")%>
<asp:datalist id="MyDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%>
</itemTemplate>
</asp:datalist>
</itemTemplate>
</asp:datalist></body>
</html>
错误信息如下:“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------在 SQL 语句结尾之后找到字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 在 SQL 语句结尾之后找到字符。源错误:
行 14: OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
行 15: DataSet MyDataSet=new DataSet();
行 16: adapter.Fill(MyDataSet);
行 17: MyDataSet.Tables[0].TableName="Article";
行 18: MyDataSet.Tables[1].TableName="AritcleClass";
源文件: F:\aspxnet\CAU\syan2.aspX 行: 16
<%@ page Language="c#" Debug="true"%>
<%@ OutputCache Duration="1" VaryByParam="None"%>
<%@ import namespace="System"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%><script runat="server">public void Page_Load(Object o,EventArgs s)
{string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
OleDbConnection Conn= new OleDbConnection(ConnStr);
OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
DataSet MyDataSet=new DataSet();
adapter.Fill(MyDataSet);
MyDataSet.Tables[0].TableName="Article";
MyDataSet.Tables[1].TableName="AritcleClass";
MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["Article"].Columns["ClassID"],MyDataSet.Tables["AritcleClass"].Columns["ClassID"]);
ParentDataList.DataSource=MyDataSet.Tables[0];
ParentDataList.DataBind();
}
</script>
<html>
<body>
<asp:datalist id="ParentDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"ClassName")%>
<asp:datalist id="MyDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%>
</itemTemplate>
</asp:datalist>
</itemTemplate>
</asp:datalist></body>
</html>
错误信息如下:“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------在 SQL 语句结尾之后找到字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 在 SQL 语句结尾之后找到字符。源错误:
行 14: OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
行 15: DataSet MyDataSet=new DataSet();
行 16: adapter.Fill(MyDataSet);
行 17: MyDataSet.Tables[0].TableName="Article";
行 18: MyDataSet.Tables[1].TableName="AritcleClass";
源文件: F:\aspxnet\CAU\syan2.aspX 行: 16
你看一下这段代码吧:string strSqlZong = "SELECT * FROM Zongzhang";
string strSqlZhi = "SELECT * FROM Zhichu";
OleDbDataAdapter daZong = new OleDbDataAdapter( strSqlZong, strConn );
OleDbDataAdapter daZhi = new OleDbDataAdapter( strSqlZhi, strConn );
DataSet ds = new DataSet( );
ds.Clear( );
daZong.Fill( ds, "Zongzhang" );
daZhi.Fill( ds, "Zhichu" );
http://www.aspnet101.com/aspnet101/aspnet/codesample.aspx?code=nestedc
http://community.csdn.net/Expert/topic/3077/3077509.xml?temp=.8546869
一定要用2个adapter来FILL吗?那为什么上面3个例子都是用1个ADAPTER来FILL的。
用1个adapter填充的话,用1个SQL语句?
要不你输出一下sql看看吧
这是我的代码,你可以看看.
conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("db1.mdb"));
str_Sql="select * from sort_name order by id asc";
string str_Sql1="select * from ticket_knowledge a where id in(select top 5 id from ticket_knowledge b where a.sort_id=b.sort_id) order by id desc";
conn.Open();
myAdapter = new OleDbDataAdapter(str_Sql,conn);
myAdapter1 = new OleDbDataAdapter(str_Sql1,conn);
ds = new DataSet();
myAdapter.Fill(ds,"sort_name");
myAdapter1.Fill(ds,"ticket_knowledge");
//ds.Tables[0].TableName = "sort_name";
//ds.Tables[1].TableName = "ticket_knowledge";
DataColumn Parent = ds.Tables["sort_name"].Columns["id"];
DataColumn Child = ds.Tables["ticket_knowledge"].Columns["sort_id"];
DataRelation OrderRelation = new DataRelation("OrderRelation", Parent, Child, false);
ds.Relations.Add(OrderRelation);
MyDataList.DataSource = ds.Tables["sort_name"].DefaultView;
DataBind();
OleDbConnection Conn= new OleDbConnection(ConnStr);
OleDbDataAdapter adapter1=new OleDbDataAdapter("select * from [ArticleClass]",Conn);
OleDbDataAdapter adapter2=new OleDbDataAdapter("select * from [Article]",Conn);
DataSet MyDataSet=new DataSet();
adapter1.Fill(MyDataSet,"ArticleClass");
adapter2.Fill(MyDataSet,"Article");
//MyDataSet.Tables[0].TableName="ArticleClass";
//MyDataSet.Tables[1].TableName="Aritcle";
MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
ParentDataList.DataSource=MyDataSet.Tables[0];
ParentDataList.DataBind();改为上面的代码后出现如下错误:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 19: //MyDataSet.Tables[0].TableName="ArticleClass";
行 20: //MyDataSet.Tables[1].TableName="Aritcle";
行 21: MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
行 22: ParentDataList.DataSource=MyDataSet.Tables[0];
行 23: ParentDataList.DataBind();
源文件: F:\aspxnet\CAU\syan2.aspx 行: 21
例如
dc1 = ds.Tables[0].Columns["MasterID"];
dc2 = ds.Tables[1].Columns["MasterID"];
DataRelation dr = new DataRelation("Title_Author",dc1, dc2, false);
ds.Relations.Add(dr); DataGrid1.DataSource = ds.Tables[0].DefaultView;
DataGrid1.DataBind();
就是子datalist里的数据没有显示
<asp:datalist id="ParentDataList" runat="server">
<itemTemplate>
C:<%#DataBinder.Eval(Container.DataItem,"ClassID")%> <%#DataBinder.Eval(Container.DataItem,"ClassName")%><br><br>
<asp:datalist id="MyDataList" runat="server">
<itemTemplate>
T:<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%><br>
</itemTemplate>
</asp:datalist>
</itemTemplate>
</asp:datalist>
DataSource=?
<%@ page Language="c#" Debug="true"%>
<%@ OutputCache Duration="1" VaryByParam="None"%>
<%@ import namespace="System"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%><script runat="server">public void Page_Load(Object o,EventArgs s)
{string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
OleDbConnection Conn= new OleDbConnection(ConnStr);
OleDbDataAdapter adapter1=new OleDbDataAdapter("select * from [ArticleClass]",Conn);
OleDbDataAdapter adapter2=new OleDbDataAdapter("select * from [Article]",Conn);
DataSet MyDataSet=new DataSet();
adapter1.Fill(MyDataSet,"ArticleClass");
adapter2.Fill(MyDataSet,"Article");
//MyDataSet.Tables[0].TableName="ArticleClass";
//MyDataSet.Tables[1].TableName="Aritcle";
//MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
DataColumn dc1 = MyDataSet.Tables[0].Columns["ClassID"];
DataColumn dc2 = MyDataSet.Tables[1].Columns["ClassID"];
DataRelation dr = new DataRelation("Title_Author",dc1, dc2, false);
MyDataSet.Relations.Add(dr);
ParentDataList.DataSource=MyDataSet.Tables[0];
ParentDataList.DataBind();
}
</script>
<html>
<body>
<asp:datalist id="ParentDataList" runat="server">
<itemTemplate>
C:<%#DataBinder.Eval(Container.DataItem,"ClassID")%> <%#DataBinder.Eval(Container.DataItem,"ClassName")%><br><br>
<asp:datalist id="MyDataList" runat="server" DataSource='<%# DataBinder.Eval(Container, "DataItem.Title_Author") %>'>
<itemTemplate>
T:<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%><br>
</itemTemplate>
</asp:datalist>
</itemTemplate>
</asp:datalist></body>
</html>