下面有一段是有关datagrid的具体代码如下
datagrid.aspx:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<title>Sample ASP.NET Page</title>
<body>
<script language="vb" runat="server">
Sub Page_Load(sender As Object,e As EventArgs)
  Dim ConnStr as String
  ConnStr="Data Source=localhost;User ID=sa;Password=99103453;Initial Catalog=pubs"
  Dim conn as SqlConnection=New SqlConnection(ConnStr)
  Try
    conn.Open()
    Dim da as SqlDataAdapter=New SqlDataAdapter("select * from authors",conn)
Dim ds As New DataSet
    da.Fill(ds,"authors")
Dim dv1 as New DataView(ds.Tables("authors"))
dv1.Sort="au_fname,au_lname Desc"
DataGrid1.DataSource=dv1
DataGrid1.DataBind()
  Catch ex As SqlException
    Status.Text=ex.Message
  Finally
    conn.Close()
  End Try
end Sub
Sub Edit_Grid(sender As Object,e As DataGridCommandEventArgs)
  DataGrid1.EditItemIndex=e.Item.ItemIndex
  DataGrid1.DataBind()
end Sub
Sub Cancel_Grid(sender As Object,e As DataGridCommandEventArgs)end Sub
Sub Update_Grid(sender As Object,e As DataGridCommandEventArgs)end Sub</script>
<h1>DataView object and data binding</h1>
<form runat="server">
<asp:label id="Status" runat="server" /><br>
<asp:datagrid id="DataGrid1" runat="server" 
    AutoGenerateColumns="false"
DatakeyFiled="au_id"
OnEditCommand="Edit_Grid"
OnCancelCommand="Cancel_Grid"
OnUpdateCommand="Update_Grid"
BackColor="lightgreen"
GridLines="none"
Font-Name="Arial"
Font-Size="10pt"
HeaderStyle-BackColor="gray"
MaintainState="false"
ShowFooter="false" />
   <Columns>
   <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" />
   <asp:TemplateColumn HeaderText="ID">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="au_id" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="Last Name">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_lname") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="au_lname" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"au_lname") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="First Name">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_fname") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="au_fname" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"au_fname") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="Phone">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"phone") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="phone" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"phone") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="Address">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"address") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="address" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"address") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="City">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"city") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="city" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"city") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="State">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"state") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="state" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"state") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="Zip">
     <ItemTemplate>
   <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"zip") %>' runat="server" />
 </ItemTemplate>
     <EditItemTemplate>
  <asp:TextBox width="100" id="zip" ReadOnly="true" text='<%# DataBinder.Eval(Container.DataItem,"zip") %>' runat="server" />
     </EditItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="Contract?">
     <ItemTemplate>
   <asp:checkbox Enabled="false" Checked='<%# DataBinder.Eval(Container.DataItem,"contract") %>' runat="server" />
 </ItemTemplate>
     <ItemTemplate>
   <asp:checkbox Enabled="true" Checked='<%# DataBinder.Eval(Container.DataItem,"contract") %>' runat="server" />
 </ItemTemplate>
   </asp:TemplateColumn>
   </Columns>     
   </asp:DataGrid>
</form>
</body>
</html>
在datagrid这段代码运行编译报错
编译器错误信息: BC30456: “DataItem”不是“System.Web.UI.Page”的成员。
源错误:
行 56:    <asp:TemplateColumn HeaderText="ID">
行 57:      <ItemTemplate>
行 58:     <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>' runat="server" />
行 59:   </ItemTemplate>
行 60:      <EditItemTemplate>源文件: c:\inetpub\wwwroot\aspnet\610.aspx    行: 58 
请各位高人指点一下,附我的操作系统是xp sp2,.net的版本信息如下:
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210 

解决方案 »

  1.   

    你怎么用的是2。0了?
    2。0的语法好像不同了你得这样绑定了
    Text='<%# Eval("字段名") %>'
     <asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>' runat="server" />
    ------》
     <asp:label Text='<%# Eval(“au_id") %>' runat="server" />
      

  2.   

    asp.net 2.0和1。1 有区别的
      

  3.   

    是的,2.0和1.0肯定有区别,但是请看下面一段代码
    datalist.aspx
    <%@ Import Namespace="System.Data" %>
    <html>
    <title>Using DataList</title>
    <script language="VB" runat="server">
    Function CreateDataSource() As ICollection
      Dim dt As DataTable
      Dim dr As DataRow
      dt=new DataTable()
      dt.Columns.Add(new DataColumn("StringValue1",System.Type.GetType("System.String")))
      Dim i As Integer
      For i=0 To 9
        dr=dt.NewRow()
        dr(0)="Item " & i
        dt.Rows.Add(dr)
      next i  Dim dv As DataView
      dv=new DataView(dt)
      CreateDataSource=dv
    End FunctionSub Page_Load(sender As Object,e As EventArgs)
      if not IsPostBack
        'need to load this data only once
        DataList1.DataSource=CreateDataSource()
        DataList1.DataBind()
      end if
    End SubSub Button1_Click(sender As Object,e As EventArgs)
      if DropDown1.SelectedIndex=0 then
        DataList1.RepeatDirection=RepeatDirection.Horizontal
      else
        DataList1.RepeatDirection=RepeatDirection.Vertical
      end if  if DropDown2.SelectedIndex=0 then
        DataList1.RepeatLayout=RepeatLayout.Table
      else
        DataList1.RepeatLayout=RepeatLayout.Flow
      end if  DataList1.RepeatColumns=DropDown3.SelectedIndex+1  if Check1.Checked and DataList1.RepeatLayout=RepeatLayout.Table then
        DataList1.BorderWidth=Unit.Pixel(1)
    DataList1.GridLines=GridLines.Both
      else
        DataList1.BorderWidth=Unit.Pixel(0)
    DataList1.GridLines=GridLines.None
      end if
    End Sub
    </script>
    <body>
    <center>
    <form runat="server">
    <asp:DataList id="DataList1" runat="server"
      BorderColor="black"
      CellPadding="3"
      Font-Name="Verdana"
      Font-Size="8pt"
      HeaderStyle-BackColor="#6F6F6"
      AlternatingItemStyle-BackColor="#6F6F6">
    <HeaderTemplate>
      Items
    </HeaderTemplate>
    <ItemTemplate>
      <%# DataBinder.Eval(Container.DataItem,"StringValue1") %>
    </ItemTemplate>
    </asp:DataList>
    <p>
    <hr noshade align="left" width="300px">
    RepeatDirection:
    <asp:DropDownList id="DropDown1" runat="server">
      <asp:ListItem>Horizontal</asp:ListItem>
      <asp:ListItem>Vertical</asp:ListItem>
    </asp:DropDownList><br>
    RepeatLayout:
    <asp:DropDownList id="DropDown2" runat="server">
      <asp:ListItem>Table</asp:ListItem>
      <asp:ListItem>Flow</asp:ListItem>
    </asp:DropDownList><br>
    RepeatColumns:
    <asp:DropDownList id="DropDown3" runat="server">
      <asp:ListItem>1</asp:ListItem>
      <asp:ListItem>2</asp:ListItem>
      <asp:ListItem>3</asp:ListItem>
      <asp:ListItem>4</asp:ListItem>
      <asp:ListItem>5</asp:ListItem>
    </asp:DropDownList><br>
    Show Borders:
    <asp:CheckBox id="Check1" runat="server" /><p>
    <asp:Button id="Button1" runat="server" Text="Refresh DataList" OnClick="Button1_Click" />
    </form>
    </center>
    </body>
    </html>其中<%# DataBinder.Eval(Container.DataItem,"StringValue1") %>与前面那个代码并没有很大的区别,但是在同样的环境可以正常运行,唯一的区别是前面的代码数据是连的sql,并且使用的是datagrid控件,而这个代码的数据是函数CreateDataSource里初始化的,用的是datalist控件,请问可以指出其中的区别吗,谢谢
      

  4.   

    如果是2.0的,微软是建议用这样的方式,Text='<%# Eval("ProductName") %>'。<%# DataBinder.Eval(Container.DataItem,"StringValue1") %>
    这样的方式只能说是有可能出错。
      

  5.   

    '<%# DataBinder.Eval(Container.DataItem,"au_id") %>' 之类的
    换成
    '<%# Eval(au_id") %>' 就行了我昨天看了一下2.0里微软的datalist例子,它的绑定语句还真是'<%# DataBinder.Eval(Container.DataItem,"au_id") %>'这样的,DataGrid的是'<%# Eval(au_id") %>'这样的。
      

  6.   

    ok,问题解决了,多谢各位了,除了'<%# DataBinder.Eval(Container.DataItem,"au_id") %>'换成是'<%# Eval("au_id") %>'但还是有个地方有错误
    <asp:datagrid id="DataGrid1" runat="server" 
        AutoGenerateColumns="false"
    DatakeyFiled="au_id"
    OnEditCommand="Edit_Grid"
    OnCancelCommand="Cancel_Grid"
    OnUpdateCommand="Update_Grid"
    BackColor="lightgreen"
    GridLines="none"
    Font-Name="Arial"
    Font-Size="10pt"
    HeaderStyle-BackColor="gray"
    MaintainState="false"
    ShowFooter="false" />'>'之前的'/'是多余的,否则数据就无法显示了。