首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-05-01 
ascx里面的textbox取不到值怎么办?各位大侠,我有一个aspx,里面放了一个自定义的分页控件,ascx格式的。该asc

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值就空了

热点排行