用C#和VB.NET实现同样一个功能,为什么C#好用而VB.NET出错,请帮忙看一下??
tflb 2003-10-18 06:53:07 <%@ Page Language="C#" Debug="true" ContentType="text/html" ResponseEncoding="gb2312"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:/test/news.mdb");
// OleDbConnection conn = new OleDbConnection("provider=sqloledb;server=(local);database=news;uid=sa;pwd=tflbtest;");
OleDbDataAdapter da1 = new OleDbDataAdapter("select * from bigclass",conn);
OleDbDataAdapter da2 = new OleDbDataAdapter("select * from news n where newsid in (select top 5 newsid from news where bigclassid=n.bigclassid order by updatetime desc)",conn);
DataSet ds = new DataSet();
conn.Open();
da1.Fill(ds,"bigclass");
da2.Fill(ds,"news");
conn.Close();
ds.Relations.Add("myrelation", ds.Tables["bigclass"].Columns["bigclassid"], ds.Tables["news"].Columns["bigclassid"]);
parentDataGrid.DataSource = ds.Tables["bigclass"];
parentDataGrid.DataBind();
}
</script>
<html>
<body>
<form runat=server>
<asp:DataGrid id="parentDataGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn DataField="bigclassname" HeaderText="²¿ÃÅ" />
<asp:TemplateColumn HeaderText="±êÌâ">
<ItemTemplate>
<asp:DataGrid id="childDataGrid" runat="server" ShowHeader=false DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="Title">
<ItemTemplate>
<asp:hyperlink
NavigateURL='<%#"newshow.aspx?newsid="+DataBinder.Eval(Container.DataItem,"[\"newsid\"]")%>'
Text='<%# DataBinder.Eval(Container.DataItem,"[\"title\"]") %>'
runat="server"/>
<%# DataBinder.Eval(Container.DataItem,"[\"updatetime\"]") %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
没有问题!而下面有问题
<%@ Page Language="VB" Debug="true" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script Language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim conn as OleDbConnection
Dim da1,da2 as OleDbDataAdapter
Dim ds as DataSet
Dim strConn As String
strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.MapPath("./")&"data/news.mdb"
Conn = New OledbConnection(strConn)
da1 = new OleDbDataAdapter("select * from bigclass",conn)
da2 = new OleDbDataAdapter("select * from news n where newsid in (select top 5 newsid from news where bigclassid=n.bigclassid order by updatetime desc)",conn)
ds = new DataSet()
conn.Open()
da1.Fill(ds,"bigclass")
da2.Fill(ds,"news")
conn.Close()
ds.Relations.Add("myrelation", ds.Tables("bigclass").Columns("bigclassid"), ds.Tables("news").Columns("bigclassid"))
parentDataGrid.DataSource = ds.Tables("bigclass")
parentDataGrid.DataBind()
end sub
</script>
<html>
<body>
<form runat=server>
<asp:DataGrid id="parentDataGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn DataField="bigclassname" HeaderText="²¿ÃÅ" />
<asp:TemplateColumn HeaderText="±êÌâ">
<ItemTemplate>
<asp:DataGrid id="childDataGrid" Width="380" runat="server" ShowHeader=false DataSource='<%# Ctype(container.Dataitem,DataRowView).Row.GetChildRows("myrelation") %>' AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="Title">
<ItemTemplate>
<asp:hyperlink NavigateURL='<%#"newshow.aspx?newsid="+DataBinder.Eval(Container.DataItem,"newsID")%>'
Text='<%# DataBinder.Eval(Container.DataItem,"title") %>'
runat="server"/>
<%# DataBinder.Eval(Container.DataItem,"updatetime") %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
DataBinder.Eval:“System.Data.DataRow”不包含名称为 newsid 的属性。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Data.DataRow”不包含名称为 newsid 的属性。
源错误:
行 44: <asp:TemplateColumn HeaderText="Title">
行 45: <ItemTemplate>
行 46: <asp:hyperlink NavigateURL='<%#"newshow.aspx?newsid="+DataBinder.Eval(Container.DataItem,"newsid")%>'
行 47: Text='<%# DataBinder.Eval(Container.DataItem,"[title]") %>'
行 48: runat="server"/>
请指点一下!先谢谢了!