用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"/>

请指点一下!先谢谢了!
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tflb 2003-10-19
  • 打赏
  • 举报
回复
谢谢niwalker,已经解决!
竹君子 2003-10-18
  • 打赏
  • 举报
回复
同意niwalker()
niwalker 2003-10-18
  • 打赏
  • 举报
回复
hehe, 你什么东西都考虑到了,就是没有想到那个“+“号吧?在vb.net中必须使用"&"
tflb 2003-10-18
  • 打赏
  • 举报
回复
我把"news"改写成"(newsID)"
提示:输入字符串的格式不正确。
Inyoureyes 2003-10-18
  • 打赏
  • 举报
回复
你把newsid中括号加上看看吧
Inyoureyes 2003-10-18
  • 打赏
  • 举报
回复
不好意思,看错了
Inyoureyes 2003-10-18
  • 打赏
  • 举报
回复
第46行尖括号不匹配,造成编译器将"newsid"认作属性值,所以你应该把尖括号匹配好
tflb 2003-10-18
  • 打赏
  • 举报
回复
up
这是第六版的介绍《ASP.NET 4入门经典:涵盖C#VB.NET(第6版)》内容简介:ASP.NET是.NET Framework的一部分,用于构建内容丰富的动态Web站点。其最新的版本ASP.NET 4对上一版进行了许多改进,包括增强了Web窗体,并添加了jQuery的支持。《ASP.NET 4入门经典:涵盖C#VB.NET(第6版)》循序渐进,逐步讲解了如何使用ASP.NET 4构建内容丰富的Web站点,并提供了大量使用C#和VB的示例。通过实际动手练习,您将学到关于构建Web站点的第一手信息,同时能够深刻理解在浏览器中查看ASP.NET 4页面时,后台到底发生了什么。 这是第七版,也就是本源码书的介绍 The ultimate programming guide to ASP.NET 4.5, by popular author and Microsoft MVP Imar Spaanjaars Updated for ASP.NET 4.5, this introductory book is filled with helpful examples and contains a user-friendly, step-by-step format. Written by popular author and Microsoft ASP.NET MVP Imar Spaanjaars, this book walks you through ASP.NET, Microsoft's technology for building dynamically generated web pages. This edition retains the highly accessible approach to building the Planet Wrox website example, an online community site featuring product reviews, picture sharing, bonus content for registered users, and more. Contains the comprehensive guide to the latest technology additions to ASP.NET 4.5 Shows how to build basic ASP.NET web pages and configure their server Includes information on how to add features with pre-built server controls Reveals how to design pages and make them consistent Contains the information needed for getting user input and displaying data Beginning ASP.NET 4.5 in C# and VB uses Spaanjaars's distinct writing style to put you at ease with learning ASP.NET 4.5.

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧