asp.net 找不到控件。
前台代码:<tablewidth="500"border="0"cellpadding="0"cellspacing="1"bgcolor="#CCCCCC"class=...
前台代码:
<table width="500" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" class="list">
<asp:Repeater ID="rptGoodsType" runat="server" onitemcommand="rptGoodsType_ItemCommand">
<HeaderTemplate>
<tr>
<th height="40">商品类别名称</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("goodsTypeName") %></td>
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td>
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="nextPage" runat="server">下一页</asp:HyperLink>
<asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
</td>
</tr>
</FooterTemplate>
</asp:Repeater>
</table>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
DataAccess myData = new DataAccess();
DataSet ds = myData.GetAllGoodsType();//自己定义的,值已经获取到了
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;
//当前页面从Page查询参数获取
if (Request.QueryString["Page"] != null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;
objPds.CurrentPageIndex = CurPage-1;
lblCurrentPage.Text = "Page: " + CurPage.ToString();
if (!objPds.IsFirstPage)
{
prevPage.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
}
if (!objPds.IsLastPage)
{
nextPage.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);
}
//把PagedDataSource 对象赋给Repeater控件
rptGoodsType.DataSource=objPds;
rptGoodsType.DataBind();
}
protected void rptGoodsType_ItemCommand(object source, RepeaterCommandEventArgs e)
{
}
救救我吧:
编译器错误消息: CS0103: 当前上下文中不存在名称“lblCurrentPage”
编译器错误消息: CS0103: 当前上下文中不存在名称“prevPage”
编译器错误消息: CS0103: 当前上下文中不存在名称“nextPage”
把这三项注释了就好使,或者把这3个控件不放在 FooterTemplate里就好使,为什么FooterTemplate里的控件获取不到?
我确实是粘贴过来的代码。 怎么切换都不好使。 展开
<table width="500" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" class="list">
<asp:Repeater ID="rptGoodsType" runat="server" onitemcommand="rptGoodsType_ItemCommand">
<HeaderTemplate>
<tr>
<th height="40">商品类别名称</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("goodsTypeName") %></td>
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td>
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="nextPage" runat="server">下一页</asp:HyperLink>
<asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
</td>
</tr>
</FooterTemplate>
</asp:Repeater>
</table>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
DataAccess myData = new DataAccess();
DataSet ds = myData.GetAllGoodsType();//自己定义的,值已经获取到了
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;
//当前页面从Page查询参数获取
if (Request.QueryString["Page"] != null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;
objPds.CurrentPageIndex = CurPage-1;
lblCurrentPage.Text = "Page: " + CurPage.ToString();
if (!objPds.IsFirstPage)
{
prevPage.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
}
if (!objPds.IsLastPage)
{
nextPage.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);
}
//把PagedDataSource 对象赋给Repeater控件
rptGoodsType.DataSource=objPds;
rptGoodsType.DataBind();
}
protected void rptGoodsType_ItemCommand(object source, RepeaterCommandEventArgs e)
{
}
救救我吧:
编译器错误消息: CS0103: 当前上下文中不存在名称“lblCurrentPage”
编译器错误消息: CS0103: 当前上下文中不存在名称“prevPage”
编译器错误消息: CS0103: 当前上下文中不存在名称“nextPage”
把这三项注释了就好使,或者把这3个控件不放在 FooterTemplate里就好使,为什么FooterTemplate里的控件获取不到?
我确实是粘贴过来的代码。 怎么切换都不好使。 展开
12个回答
展开全部
测试了一下,就给楼主说说第一个上一页,因为另外两个都是同样的道理:
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
的输出ID:
1,使用母版页,然后放在 <FooterTemplate>里面,他的ID变成:
ctl00_rptGoodsType_ctl11_prevPage
2,不适用母版页,然后放在 <FooterTemplate>里面,他的ID变成:
rptGoodsType_ctl11_prevPage
换句话说,不管他使用不使用母版页,他只要在<FooterTemplate>里面,他就不是单独的个体了,就变成是repeater的一部分了。
下面的代码可以帮你找到他:
string strvalue = string.Empty;
foreach (RepeaterItem item in rptGoodsType.Controls)
{
if (item.ItemType == ListItemType.Footer)
{
HyperLink hy = (HyperLink)item.FindControl("prevPage");
if (hy != null)
strvalue += "Footer:" + hy.ID;
}
}
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
的输出ID:
1,使用母版页,然后放在 <FooterTemplate>里面,他的ID变成:
ctl00_rptGoodsType_ctl11_prevPage
2,不适用母版页,然后放在 <FooterTemplate>里面,他的ID变成:
rptGoodsType_ctl11_prevPage
换句话说,不管他使用不使用母版页,他只要在<FooterTemplate>里面,他就不是单独的个体了,就变成是repeater的一部分了。
下面的代码可以帮你找到他:
string strvalue = string.Empty;
foreach (RepeaterItem item in rptGoodsType.Controls)
{
if (item.ItemType == ListItemType.Footer)
{
HyperLink hy = (HyperLink)item.FindControl("prevPage");
if (hy != null)
strvalue += "Footer:" + hy.ID;
}
}
展开全部
“把这三项注释了就好使,或者把这3个控件不放在 FooterTemplate里就好使,为什么FooterTemplate里的控件获取不到?”,如果实在不行,建议楼主就不要把这3个控件放到FooterTemplate这个里面了,毕竟那3项只是“脚部”的显示,完全可以重新放在另外一个table里面。看下面的代码:
<asp:Repeater ID=“rptGoodsType” runat=“server” onitemcommand=“rptGoodsType_ItemCommand”>
<HeaderTemplate>
<table width=“500” border=“0” cellpadding=“0” cellspacing=“1” bgcolor=“#CCCCCC” class=“list”>
<tr>
<th height=“40”>商品类别名称</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval(“goodsTypeName”) %></td>
<td>
<asp:Button ID=“UpdateButton” runat=“server” CommandName=“Update” Text=“更新” />
<asp:Button ID=“CancelButton” runat=“server” CommandName=“Cancel” Text=“取消” />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<table>
<tr>
<td>
<asp:HyperLink ID=“prevPage” runat=“server”>上一页</asp:HyperLink>
<asp:HyperLink ID=“nextPage” runat=“server”>下一页</asp:HyperLink>
<asp:Label ID=“lblCurrentPage” runat=“server”></asp:Label>
</td>
</tr>
</table>
没数据时,可以根据需求是否隐藏脚部代码。在一个楼主注意Repeater里面table的放置。像楼主那样放,在没有数据时,也会显示一个table(多余的)。
“放在foot之外好使,但我真想知道为什么获取不到。”控件也是一个类,放在foot里面的时候i,可能.net没有自动创建这个类,放在外面的时候,可能.net自动创建了这个类。如果楼主的.net可以创建“asp.net web 应用程序”,即创建一个页面会有3个相应的文件,例如:Default.aspx,Default.aspx.cs,Default.aspx.designer.cs,其中在Default.aspx.designer.cs这个文件里面创建了相应的控件,如果这里面有,则可以this到,如果没有,则this不到。
<asp:Repeater ID=“rptGoodsType” runat=“server” onitemcommand=“rptGoodsType_ItemCommand”>
<HeaderTemplate>
<table width=“500” border=“0” cellpadding=“0” cellspacing=“1” bgcolor=“#CCCCCC” class=“list”>
<tr>
<th height=“40”>商品类别名称</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval(“goodsTypeName”) %></td>
<td>
<asp:Button ID=“UpdateButton” runat=“server” CommandName=“Update” Text=“更新” />
<asp:Button ID=“CancelButton” runat=“server” CommandName=“Cancel” Text=“取消” />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<table>
<tr>
<td>
<asp:HyperLink ID=“prevPage” runat=“server”>上一页</asp:HyperLink>
<asp:HyperLink ID=“nextPage” runat=“server”>下一页</asp:HyperLink>
<asp:Label ID=“lblCurrentPage” runat=“server”></asp:Label>
</td>
</tr>
</table>
没数据时,可以根据需求是否隐藏脚部代码。在一个楼主注意Repeater里面table的放置。像楼主那样放,在没有数据时,也会显示一个table(多余的)。
“放在foot之外好使,但我真想知道为什么获取不到。”控件也是一个类,放在foot里面的时候i,可能.net没有自动创建这个类,放在外面的时候,可能.net自动创建了这个类。如果楼主的.net可以创建“asp.net web 应用程序”,即创建一个页面会有3个相应的文件,例如:Default.aspx,Default.aspx.cs,Default.aspx.designer.cs,其中在Default.aspx.designer.cs这个文件里面创建了相应的控件,如果这里面有,则可以this到,如果没有,则this不到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在aspx的最上面,有一行这样的代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
其中CodeFile是该页面对应的cs文件名,Inherits是文件里面的类名,如果你连这句都粘贴过来的话,那么记得要把这个地方改掉,或者只粘贴除了这行以外的代码,新建一个页面,再试试,祝成功。
如果还是不能解决这个问题,可以给我发百度消息!
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
其中CodeFile是该页面对应的cs文件名,Inherits是文件里面的类名,如果你连这句都粘贴过来的话,那么记得要把这个地方改掉,或者只粘贴除了这行以外的代码,新建一个页面,再试试,祝成功。
如果还是不能解决这个问题,可以给我发百度消息!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果控件放在另一个控件(Repeater)的模板里面,不能直接访问,而要用
var lb = (Label)
rptGoodsType.FindControl("lblCurrentPage");
这样的方式访问
var lb = (Label)
rptGoodsType.FindControl("lblCurrentPage");
这样的方式访问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LZ,其实可以找到。是在 protected void rptGoodsType_ItemCommand(object source, RepeaterCommandEventArgs e)这个方法中,而且需要
<FooterTemplate>
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="nextPage" runat="server">下一页</asp:HyperLink>
<asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="a">LinkButton</asp:LinkButton>//这个是为了触发事件
</FooterTemplate>
protected void rptGoodsType_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "a")
{
Label lb = (Label)e.Item.FindControl("lblCurrentPage");
lb.Text = "gg";
}
}
这样是可以找到的。我只说了思路,具体的你自己整整吧(估计要改好多代码),当然也可以像楼上的写在另一个table里(比较简单,我比较推荐)。
——————————————————————————
我使用了母板页,var lb = (Label)rptGoodsType.FindControl("lblCurrentPage");之后不报错(因为这里的lb为null,是不会出错的),但lb.Text="123";报错(这里肯定会出错),让我使用 new 关键字。
<FooterTemplate>
<asp:HyperLink ID="prevPage" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="nextPage" runat="server">下一页</asp:HyperLink>
<asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="a">LinkButton</asp:LinkButton>//这个是为了触发事件
</FooterTemplate>
protected void rptGoodsType_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "a")
{
Label lb = (Label)e.Item.FindControl("lblCurrentPage");
lb.Text = "gg";
}
}
这样是可以找到的。我只说了思路,具体的你自己整整吧(估计要改好多代码),当然也可以像楼上的写在另一个table里(比较简单,我比较推荐)。
——————————————————————————
我使用了母板页,var lb = (Label)rptGoodsType.FindControl("lblCurrentPage");之后不报错(因为这里的lb为null,是不会出错的),但lb.Text="123";报错(这里肯定会出错),让我使用 new 关键字。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有时asp.net会出现这样问题
建议,你再新建一个空页面(名字命名一样),再把前台内容考进去,运行,再把后台代码考进去,就可以了.
建议,你再新建一个空页面(名字命名一样),再把前台内容考进去,运行,再把后台代码考进去,就可以了.
参考资料: http://www.bjzero.net
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询