我最近在尝试编写一个b2c网站,在编写到购物车的时候,遇到以下的问题
编译器错误信息: BC30311: 类型“System.Data.DataTable 的 1 维数组”的值无法转换为“System.Data.DataTable” 
可我发现没有什么错误啊!!!!怎么办啊~~~~代码如下:
<%@import namespace = "system.data"%>
<%@import namespace = "system.data.sqlclient"%>
<script language="VB" runat="server">
dim shopcart as DataTable()
dim shopcart_dc as datacolumn
dim shopcart_dr as datarow
Sub Page_Load(Sender As Object, E As EventArgs)
    dim productid as string =request.QueryString("productid")  ’接受传来的productid号
if session("user_shopcart")=nothing then
    newshopcarttable()
   session("user_shopcart")=shopcart
else 
   shopcart=session("user_shopcart")
end if
if not ispostback then
     if(not productid="") then
   addto_shopcart(productid)
   myshopcart.DataSource= new dataview(shopcart)
       myshopcart.DataBind()
 end if
   'calculate_total   
   end if    

End Sub
function newshopcarttable()    '添加一张虚表
     shopcart=new DataTable()
 shopcart.Columns.Add(New DataColumn("product_id",GetType(int)))
 shopcart.Columns.Add(New DataColumn("product_name",GetType(string)))
 shopcart.Columns.Add(New DataColumn("et_price",GetType(string)))
 shopcart.Columns.Add(New DataColumn("lego_price",GetType(string)))
 shopcart.Columns.Add(New DataColumn("product_quantity",GetType(int)))
 shopcart.Columns.Add(New DataColumn("total_money",GetType(string)))
 dim dckey() as datacolumn={shopcart.columns("product_id")}
 shopcart.primarykey=dckey
end function
function addto_shopcart(byval productid as string)    '加入数据
    dim shopcarttable=get_detail_product(productid).defaultview   '从数据库中读出该产品的值 赋给虚表
    shopcartrow(0)=shopcarttable.row(0)("product_id")
shopcartrow(1)=shopcarttable.row(0)("product_name")
shopcartrow(2)=shopcarttable.row(0)("et_price")
shopcartrow(3)=shopcarttable.row(0)("lego_price")
    shopcartrow(4)=1
shopcartrow(5)=shopcarttable.row(3)*shopcarttable.row(4)
shopcart.rows.add(shopcartrow)
end function
function get_detail_product(byval productid as integer) as datatable    '查询数据库中该产品的信息
 Dim conn As New SqlConnection("Server=localhost;Database=shop;Uid=sa;Pwd=1234") 
     dim strsql as string ="select * from  item  where product_id = " & productid & ""
     dim ds as new dataset()
 dim  adp as new sqldataadapter(strsql,conn)
     adp.fill(ds,"detail_product")
     return ds.tables("detail_product")
end function
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form runat="server">
<ASP:DataGrid id="myshopcart"
 BorderColor="#FFFFFF" BorderWidth="3" CellPadding="6" GridLines="Horizontal"
             Font-Name="verdana" Font-Size="12Pt"
 HeaderStyle-BackColor="#99CCFF" Width="100%" 
 HeaderStyle-Font-Name="verdana"
 ItemStyle-Font-Name="verdana"
     AutoGenerateColumns="false"
 DataKeyField="product_id" 

 runat="server">
<Columns>
<asp:BoundColumn HeaderText="商品名称" HeaderStyle-HorizontalAlign="left"  DataField="product_name"/>
<asp:BoundColumn HeaderText="市场价"  HeaderStyle-HorizontalAlign="center" DataField="et_price"/>
<asp:BoundColumn HeaderText="乐购价"  HeaderStyle-HorizontalAlign="center" DataField="lego_price"/>
<asp:TemplateColumn HeaderText="选购数量">
       <ItemTemplate>
     <asp:Textbox id="product_quantity"  Size="5" Text='<%#container.dataitem("product_quantity")%>' runat="server"/>
       </ItemTemplate>
    </asp:TemplateColumn>
 <asp:TemplateColumn HeaderText="商品小计" >
        <itemtemplate>
<asp:Label ID="total_money" Text='<%#container.dataitem("total_money")*1%>' runat="server"/>
</ItemTemplate>
 </asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Label ID="message" runat="server" />        
</form></body>
</html>