下面有一段是有关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
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
2。0的语法好像不同了你得这样绑定了
Text='<%# Eval("字段名") %>'
<asp:label Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>' runat="server" />
------》
<asp:label Text='<%# Eval(“au_id") %>' runat="server" />
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控件,请问可以指出其中的区别吗,谢谢
这样的方式只能说是有可能出错。
换成
'<%# Eval(au_id") %>' 就行了我昨天看了一下2.0里微软的datalist例子,它的绑定语句还真是'<%# DataBinder.Eval(Container.DataItem,"au_id") %>'这样的,DataGrid的是'<%# 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" />'>'之前的'/'是多余的,否则数据就无法显示了。