困惑:刚学ASP.NET就碰到这个问题,想了N久未能搞掂,各位高手帮忙看看.... 引入System.ComponentModel 命名空间using System.ComponentModel 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对了,建议你将后台类文件和Html 分开写 估计是没有预先定义DataList1<script language="C#" runat="server"> protected DataList DataList1;//增加一行 void Page_Load(Object Src,EventArgs E) {......因为是延迟绑定。而你在运行Page_Load时已经绑定了,所以找不到Container.DataItem也可以把<asp:CheckBox id=chk1 Checked='<%# (bool)DataBinder.Eval(Container.DataItem,"BoolValue")%>' runat=server/>修改为不用<asp:控件,直接使用<input>的HTML控件就没有问题了,在DataList模板内使用了asp控件,如:<asp:CheckBox>内部属性就不能使用延迟绑定<%# %>的方式 <%@ Import namespace="System.ComponentModel" %> 代码如果是这样子就对了,不信你试一试,你在DataList控件中提前结束:<%@ Import namespace="System.Data" %><HTML> <HEAD> <script language="C#" runat="server"> void Page_Load(Object Src,EventArgs E) { if (!Page.IsPostBack) { DataTable dt=new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("IntegerValue",typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue",typeof(String))); dt.Columns.Add(new DataColumn("DateTimeValue",typeof(DateTime))); dt.Columns.Add(new DataColumn("BooleanValue",typeof(bool))); for(int i=1;i<=9;i++) { dr=dt.NewRow(); dr[0]=i; dr[1]="No."+i.ToString(); dr[2]=DateTime.Now; dr[3]=(i%2!=0)?true:false; dt.Rows.Add(dr); } DataList1.DataSource=new DataView(dt); DataList1.DataBind(); } } </script> </HEAD> <body> <center> <h3><font face="Verdana">绑定到DataView</font></h3> <form runat="server" ID="Form1"> <asp:DataList id="DataList1" runat="server" RepeatColumns="3" Width="80%" BorderColor="red" BackColor="gray" BorderWidth="8" GridLines="Both" CellPadding="8" CellSpacing="8" > <ITEMTEMPLATE name="ItemTemplate">定购日期:<%# DataBinder.Eval(Container.DataItem,"DateTimeValue","{0:d}") %> 数量:<%# DataBinder.Eval(Container.DataItem,"IntegerValue","{0:N2}")%> <br>项:<%# DataBinder.Eval(Container.DataItem,"StringValue")%> 定购日期: <asp:CheckBox id=chk1 runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem,"BooleanValue")%>'> </asp:CheckBox><P></ITEMTEMPLATE></asp:DataList> </center> </P></FORM> <CENTER></CENTER> </body></HTML> 也就是去掉 <asp:DataList id="DataList1" runat="server" RepeatColumns="3" Width="80%" BorderColor="red" BackColor="gray" BorderWidth="8" GridLines="Both" CellPadding="8" CellSpacing="8" />最后的那个“/”还有你的程序里面将BooleanValue写成BoolValue也是一大错误!如果 改正以上两个错误还是可以运行的 <asp:DataList id="DataList1" runat="server" RepeatColumns="3" Width="80%" BorderColor="red" BackColor="gray" BorderWidth="8" GridLines="Both" CellPadding="8" CellSpacing="8" />去掉/,因为<%# DataBinder.Eval(Container.DataItem,"DateTimeValue","{0:d}") %>要绑定数据,而你把值绑定到了DataList,但是由于<asp:DataList ..../>已经结束了,所以后面的代码就不在DataList中了。还有:</asp:Datalist 少了一个“>”。 问个泛型的问题 datagrid列头可以手动随意拉宽后的奇迹,希望和你一起见证 asp.net webfrom 路由设置bug,请教高手 样式的问题 急求, 请高手帮俺看看这程序有问题吗? 一个js弹出窗口的问题 未将对象引用设置到对象的实例。 大家帮忙看一下为什么往access添加信息时会提示说"至少一个参数没有被指定值" XP pro安装VS.NET问题!!!请高手指点! 一个很严重的ASP.NET错误,期望大家帮忙解决 什么情况下机子不能运行asp.net网页及.aspx 请问,哪有关于样式表的介绍文章?
protected DataList DataList1;//增加一行
void Page_Load(Object Src,EventArgs E)
{
......因为是延迟绑定。而你在运行Page_Load时已经绑定了,所以找不到Container.DataItem也可以把
<asp:CheckBox id=chk1 Checked='<%# (bool)DataBinder.Eval(Container.DataItem,"BoolValue")%>' runat=server/>
修改为不用<asp:控件,直接使用<input>的HTML控件就没有问题了,在DataList模板内使用了asp控件,如:<asp:CheckBox>内部属性就不能使用延迟绑定<%# %>的方式
<%@ Import namespace="System.Data" %>
<HTML>
<HEAD>
<script language="C#" runat="server">
void Page_Load(Object Src,EventArgs E)
{
if (!Page.IsPostBack)
{
DataTable dt=new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("IntegerValue",typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue",typeof(String)));
dt.Columns.Add(new DataColumn("DateTimeValue",typeof(DateTime)));
dt.Columns.Add(new DataColumn("BooleanValue",typeof(bool)));
for(int i=1;i<=9;i++)
{
dr=dt.NewRow();
dr[0]=i;
dr[1]="No."+i.ToString();
dr[2]=DateTime.Now;
dr[3]=(i%2!=0)?true:false;
dt.Rows.Add(dr);
}
DataList1.DataSource=new DataView(dt);
DataList1.DataBind();
} }
</script>
</HEAD>
<body>
<center>
<h3><font face="Verdana">绑定到DataView</font></h3>
<form runat="server" ID="Form1">
<asp:DataList id="DataList1" runat="server" RepeatColumns="3" Width="80%" BorderColor="red" BackColor="gray" BorderWidth="8" GridLines="Both" CellPadding="8" CellSpacing="8" >
<ITEMTEMPLATE name="ItemTemplate">定购日期:<%# DataBinder.Eval(Container.DataItem,"DateTimeValue","{0:d}") %>
数量:<%# DataBinder.Eval(Container.DataItem,"IntegerValue","{0:N2}")%>
<br>项:<%# DataBinder.Eval(Container.DataItem,"StringValue")%>
定购日期:
<asp:CheckBox id=chk1 runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem,"BooleanValue")%>'>
</asp:CheckBox>
<P></ITEMTEMPLATE>
</asp:DataList>
</center>
</P></FORM>
<CENTER></CENTER>
</body>
</HTML>
<asp:DataList id="DataList1" runat="server"
RepeatColumns="3"
Width="80%"
BorderColor="red"
BackColor="gray"
BorderWidth="8"
GridLines="Both"
CellPadding="8"
CellSpacing="8"
/>
最后的那个“/”还有你的程序里面将BooleanValue写成BoolValue也是一大错误!
如果 改正以上两个错误还是可以运行的
RepeatColumns="3"
Width="80%"
BorderColor="red"
BackColor="gray"
BorderWidth="8"
GridLines="Both"
CellPadding="8"
CellSpacing="8"
/>
去掉/,因为<%# DataBinder.Eval(Container.DataItem,"DateTimeValue","{0:d}") %>要绑定数据,而你把值绑定到了DataList,但是由于<asp:DataList ..../>已经结束了,所以后面的代码就不在DataList中了。
还有:</asp:Datalist 少了一个“>”。