这个页面实现绑定Repeater显示内容并分页 ,Repeater的属性设置为:EnableViewState="false"
Repeater中每一行都有修改数据项的Button;如: <asp:Repeater ID="Rep_List" runat="server" OnItemDataBound="Rep_List_ItemDataBound"
OnItemCommand="Rep_List_ItemCommand" EnableViewState="false">
<ItemTemplate>
<tr class="btop">
<td rowspan="3" class="br">
<%#Eval("GHXX_XH")%>
</td>
<td>
<%#Eval("KH_HM")%>
</td>
<td rowspan="3">
<asp:LinkButton ID="Lbtn_Confirm" runat="server" CommandName="Confirm" CommandArgument='<%#Eval("GHXX_ID") %>'
Text="修改"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
在OnInit方法中重新绑定数据源如: protected override void OnInit(EventArgs e)
{
FenYe1.OnPageChange += new Control.PageChangeHandler(FenYe1_OnPageChange);
if (!IsPostBack)
{
// HttpCookie _Cookie = new HttpCookie("PageIndex", "1");
// HttpCookie _Cookies = new HttpCookie("KHZT", "");
// HttpCookie _CookieFenZu = new HttpCookie("FenZu", "4");
// Response.AppendCookie(_CookieFenZu);
// Response.AppendCookie(_Cookie);
// Response.AppendCookie(_Cookies);
}
//_FenZu = int.Parse(Request.Cookies["FenZu"].Value);
//_KHZT = Request.Cookies["KHZT"].Value;
//_PageIndex = int.Parse(Request.Cookies["PageIndex"].Value);
Bind();
base.OnInit(e);
}用ViewState的设置的属性如:
/// <summary>
/// 当前页码
/// </summary>
public int _PageIndex
{
get
{
return ViewState["PageIndex"] != null ? Convert.ToInt32(ViewState["PageIndex"]) : 1;
}
set
{
ViewState["PageIndex"] = value;
}
}
/// <summary>
/// 奇偶数
/// </summary>
public int _JO
{
get
{
return ViewState["JO"] != null ? Convert.ToInt32(ViewState["JO"]) : 0;
}
set
{
ViewState["JO"] = value;
}
}
.........等等;请问大家:Repeater属性设置为EnableViewState="false"时,.aspx.cs中设置的用ViewState保存的属性还能保存到响应页面
的__EVENTVALIDATION中吗?
我觉得会保存到__EVENTVALIDATION中的。如果我不设置Repeater属性EnableViewState="false",并把OnInit()方法中的代码写到Page_Load当中,这时,在第二页,点击Repeater中其中一行的Button按钮调试,_PageIndex的值就是2,就能找到我点击的那一行。但是,如果我在页面的第二页,_PageIndex的值为2,点击Repeater中其中一行中的Button按钮调试,这时属性_PageIndex就变成默认的1了,就不能找到我点击的那一行了。我现在的解决办法是把这几个属性保存的Cookie中,每次访问一次修改一次,可以达到效果,如: protected override void OnInit(EventArgs e)
{
FenYe1.OnPageChange += new Control.PageChangeHandler(FenYe1_OnPageChange);
if (!IsPostBack)
{
HttpCookie _Cookie = new HttpCookie("PageIndex", "1");
HttpCookie _Cookies = new HttpCookie("KHZT", "");
HttpCookie _CookieFenZu = new HttpCookie("FenZu", "4");
Response.AppendCookie(_CookieFenZu);
Response.AppendCookie(_Cookie);
Response.AppendCookie(_Cookies);
}
_FenZu = int.Parse(Request.Cookies["FenZu"].Value);
_KHZT = Request.Cookies["KHZT"].Value;
_PageIndex = int.Parse(Request.Cookies["PageIndex"].Value);
Bind();
base.OnInit(e);
}
但是我觉得这样不好,属性多了,写着就太麻烦了请高手指点下,还有里面的代码只是想让大家明白我说的什么意思,代码并没写全,不要太注意代码...谢谢
Repeater中每一行都有修改数据项的Button;如: <asp:Repeater ID="Rep_List" runat="server" OnItemDataBound="Rep_List_ItemDataBound"
OnItemCommand="Rep_List_ItemCommand" EnableViewState="false">
<ItemTemplate>
<tr class="btop">
<td rowspan="3" class="br">
<%#Eval("GHXX_XH")%>
</td>
<td>
<%#Eval("KH_HM")%>
</td>
<td rowspan="3">
<asp:LinkButton ID="Lbtn_Confirm" runat="server" CommandName="Confirm" CommandArgument='<%#Eval("GHXX_ID") %>'
Text="修改"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
在OnInit方法中重新绑定数据源如: protected override void OnInit(EventArgs e)
{
FenYe1.OnPageChange += new Control.PageChangeHandler(FenYe1_OnPageChange);
if (!IsPostBack)
{
// HttpCookie _Cookie = new HttpCookie("PageIndex", "1");
// HttpCookie _Cookies = new HttpCookie("KHZT", "");
// HttpCookie _CookieFenZu = new HttpCookie("FenZu", "4");
// Response.AppendCookie(_CookieFenZu);
// Response.AppendCookie(_Cookie);
// Response.AppendCookie(_Cookies);
}
//_FenZu = int.Parse(Request.Cookies["FenZu"].Value);
//_KHZT = Request.Cookies["KHZT"].Value;
//_PageIndex = int.Parse(Request.Cookies["PageIndex"].Value);
Bind();
base.OnInit(e);
}用ViewState的设置的属性如:
/// <summary>
/// 当前页码
/// </summary>
public int _PageIndex
{
get
{
return ViewState["PageIndex"] != null ? Convert.ToInt32(ViewState["PageIndex"]) : 1;
}
set
{
ViewState["PageIndex"] = value;
}
}
/// <summary>
/// 奇偶数
/// </summary>
public int _JO
{
get
{
return ViewState["JO"] != null ? Convert.ToInt32(ViewState["JO"]) : 0;
}
set
{
ViewState["JO"] = value;
}
}
.........等等;请问大家:Repeater属性设置为EnableViewState="false"时,.aspx.cs中设置的用ViewState保存的属性还能保存到响应页面
的__EVENTVALIDATION中吗?
我觉得会保存到__EVENTVALIDATION中的。如果我不设置Repeater属性EnableViewState="false",并把OnInit()方法中的代码写到Page_Load当中,这时,在第二页,点击Repeater中其中一行的Button按钮调试,_PageIndex的值就是2,就能找到我点击的那一行。但是,如果我在页面的第二页,_PageIndex的值为2,点击Repeater中其中一行中的Button按钮调试,这时属性_PageIndex就变成默认的1了,就不能找到我点击的那一行了。我现在的解决办法是把这几个属性保存的Cookie中,每次访问一次修改一次,可以达到效果,如: protected override void OnInit(EventArgs e)
{
FenYe1.OnPageChange += new Control.PageChangeHandler(FenYe1_OnPageChange);
if (!IsPostBack)
{
HttpCookie _Cookie = new HttpCookie("PageIndex", "1");
HttpCookie _Cookies = new HttpCookie("KHZT", "");
HttpCookie _CookieFenZu = new HttpCookie("FenZu", "4");
Response.AppendCookie(_CookieFenZu);
Response.AppendCookie(_Cookie);
Response.AppendCookie(_Cookies);
}
_FenZu = int.Parse(Request.Cookies["FenZu"].Value);
_KHZT = Request.Cookies["KHZT"].Value;
_PageIndex = int.Parse(Request.Cookies["PageIndex"].Value);
Bind();
base.OnInit(e);
}
但是我觉得这样不好,属性多了,写着就太麻烦了请高手指点下,还有里面的代码只是想让大家明白我说的什么意思,代码并没写全,不要太注意代码...谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货