请问下面这句在C#里好用,但在VB.NET不好用,应该怎么改呀!简单!

tflb 2003-10-18 01:51:09
就是这句ds.Relations.Add("myrelation", ds.Tables["bigclass"].Columns["bigclassid"], ds.Tables["news"].Columns["bigclassid"])
在下面的c#中没有问题!
<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>
在VB中有问题,错误在下面
<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>

编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: BC30518: 重载决策失败,原因是没有可访问的“Add”可以用这些参数调用:

源错误:



行 23: conn.Close()
行 24:
行 25: ds.Relations.Add("myrelation", ds.Tables["bigclass"].Columns["bigclassid"], ds.Tables["news"].Columns["bigclassid"])
行 26:
行 27:

请指点一下,我哪里写错了,我是初学!先谢谢了!
...全文
85 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tflb 2003-10-19
  • 打赏
  • 举报
回复
谢谢你,已经解决了,需要把46行的+改写成&,还有把"newsid"改写成"(newsid)"
tflb 2003-10-18
  • 打赏
  • 举报
回复
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:
行 48:


还是那个错误
skyover 2003-10-18
  • 打赏
  • 举报
回复
<asp:hyperlink NavigateURL='newshow.aspx?newsid=<%# DataBinder.Eval(Container.DataItem,"newsid")%>'
46行改成这个。
tflb 2003-10-18
  • 打赏
  • 举报
回复
有newsid这个列
我在C#里也遇到这样的问题了,结果把"title"改写成"(\"title\")") 就好了,
在VB里不知道怎么改
skyover 2003-10-18
  • 打赏
  • 举报
回复
你的DataRow里没有newsid 这个列。
tflb 2003-10-18
  • 打赏
  • 举报
回复
up
tflb 2003-10-18
  • 打赏
  • 举报
回复
写成"Title"
“/test”应用程序中的服务器错误。
--------------------------------------------------------------------------------

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

skyover 2003-10-18
  • 打赏
  • 举报
回复
""Title"" ==> "Title"
tflb 2003-10-18
  • 打赏
  • 举报
回复
“/test”应用程序中的服务器错误。
--------------------------------------------------------------------------------

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

我在C#里也遇到这样的问题了,结果把改写成"(\"title\")") 就好了,
在VB里不知到怎么改我把它改写成""Title""提示说编译器错误信息: BC32017: 应为逗号、“)”或有效的表达式继续符
请在指点一下!!谢谢!!
skyover 2003-10-18
  • 打赏
  • 举报
回复
把 "(\"title\")") 改成"Title"就好了。
\是C#里的转义符。VB.net里不需要的。即使要也是用两个双引号来代替。
tflb 2003-10-18
  • 打赏
  • 举报
回复
先谢谢了,帮人帮到底吧!下面怎么改呀!
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: BC32017: 应为逗号、“)”或有效的表达式继续符。

源错误:



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


skyover 2003-10-18
  • 打赏
  • 举报
回复
((DataRowView)Container.DataItem).Row.GetChildRows("myrelation")

这句话用VB是这样表示的:

Ctype(container.Dataitem,DataRowView).Row.GetChildRows("myrelation")
tflb 2003-10-18
  • 打赏
  • 举报
回复
先谢谢楼上的,上面的哪个错误已经改过来了,可是在datagrid里又有一个错误如下
这段代码在c#内好用,在vb里有问题如下
<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='<%# ((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>

编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: BC30684: “DataRowView”是一个类型,不能用作表达式。

源错误:



行 39: <asp:TemplateColumn HeaderText="标题">
行 40: <ItemTemplate>
行 41: <asp:DataGrid id="childDataGrid" Width="380" runat="server" ShowHeader=false DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' AutoGenerateColumns="false">
行 42: <Columns>
行 43:

skyover 2003-10-18
  • 打赏
  • 举报
回复
把[]改成()....分号去掉。定义变量也不同。

C#:
string s = ....
要变成dim s as string = ....

62,025

社区成员

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

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

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

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