读书人

ascx里面的textbox取不到值怎么处理

发布时间: 2012-05-01 12:48:58 作者: rapoo

ascx里面的textbox取不到值怎么办?
各位大侠,我有一个aspx,里面放了一个自定义的分页控件,ascx格式的。
该ascx里面有上一页,下一页和跳转,跳转就是一个textbox输入页码,点击按钮转向。
问题是,不管输入什么,点跳转后,在ascx的page_load都取不到textbox的值,这是为啥?

这是ascx的前台代码:
<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="FoxPager.ascx.cs" Inherits="FoxSite.Page.FoxPager" %>
<asp:LinkButton ID="lbtnFirstPage" runat="server" CssClass="lbtnCommon" OnCommand="PagerButton_Click"
CommandName="FirstPage" resourcekey="FirstPage" CausesValidation="False">首页</asp:LinkButton>
<asp:LinkButton ID="lbtnPreviousPage" runat="server" CssClass="lbtnCommon" OnCommand="PagerButton_Click"
CommandName="PreviousPage" resourcekey="PreviousPage" CausesValidation="False">上一页</asp:LinkButton>
<asp:LinkButton ID="lbtnNextPage" runat="server" CssClass="lbtnCommon" OnCommand="PagerButton_Click"
CommandName="NextPage" resourcekey="NextPage" CausesValidation="False">下一页</asp:LinkButton>
<asp:LinkButton ID="lbtnLastPage" runat="server" CssClass="lbtnCommon" OnCommand="PagerButton_Click"
CommandName="LastPage" resourcekey="LastPage" CausesValidation="False">尾页</asp:LinkButton>
<asp:TextBox ID="txtPageNum" runat="server" Width="41px"></asp:TextBox>
<asp:CompareValidator ID="cmpValPageNum" CssClass="NormalRed" runat="server" ControlToValidate="txtPageNum"
Display="Dynamic" ErrorMessage=">0" Operator="GreaterThan" Type="Integer" ValidationGroup="InfoPager"
ValueToCompare="0"></asp:CompareValidator><asp:RequiredFieldValidator ID="reqValPageNum" runat="server" CssClass="NormalRed" ControlToValidate="txtPageNum"
Display="Dynamic" ErrorMessage="*" ValidationGroup="InfoPager"></asp:RequiredFieldValidator>
<asp:LinkButton ID="lbtnGoto" runat="server" CssClass="lbtnCommon" OnCommand="PagerButton_Click"
CommandName="Go" resourcekey="Go" ValidationGroup="InfoPager">跳转</asp:LinkButton>
<asp:Label ID="lblPageInfo" runat="server" Text=""></asp:Label>

这是后台cs代码,page_load和点击事件的
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["PageCount"] = PageCount;
ViewState["PageIndex"] = PageIndex;
RefreshPager(PageIndex, PageSize, DataCount, PageCount);
}
}
protected void PagerButton_Click(object sender, CommandEventArgs e)
{
int OldPageIndex = this.PageIndex;
switch (e.CommandName)
{
case "FirstPage":
NewIndex = 1;
break;
case "PreviousPage":
NewIndex = PageIndex - 1;
break;
case "NextPage":
NewIndex = PageIndex + 1;
break;
case "LastPage":
NewIndex = Int32.Parse(ViewState["PageCount"].ToString());
break;
case "Go":
NewIndex = Int32.Parse(txtPageNum.Text);//这里永远是空


break;
}
//转向
ChangePageIndex(OldPageIndex, NewIndex);
//RefreshPager(PageIndex, PageSize, DataCount, PageCount);
}

[解决办法]
控件要用set,get来做返回
[解决办法]
((TextBox)FoxPager.FindControl("txtPageNum")).Text;


[解决办法]
把RefreshPager放在ispostback外面试试
[解决办法]
<asp:TextBox ID="txtPageNum" runat="server" Width="41px"></asp:TextBox>里面加一个属性AutoPostBack="True"
这样应该可以,你可以看看http://topic.csdn.net/u/20110812/09/e97de8b7-7a05-4b71-a96a-3fc5c96e5795.html
[解决办法]

探讨
13楼你的方法也不行。
加了属性后,每次焦点离开textbox后,页面都闪一下(我知道是postback了,不过不太友好),闪动后,textbox的值就变成空了。
我debug了下,在aspx的pageload里面去获取((TextBox)FoxPager.txtPageNum).Text,在aspx加载的时候这个text值就空了

读书人网 >asp.net

热点推荐