ASP.NET AJAX Advance Tips & Tricks (2) 动态创建Rating控件不能保存ViewState的解决方案
2008-10-24 11:02
585 查看
前言:
Rating控件用来标识分级,目前已经有广泛应用。AJAX Control Toolkit中的Rating也做的相当成熟,也算是ASP.NET AJAX扩展中做的最像传统服务端控件的一个了。然而,最近很多朋友抱怨说如果在后台代码中动态创建Rating控件,那么在PostBack发生后,Rating的状态将会丢失(未存入ViewState)。本文介绍两种方法来解决此问题。问题重现:
如果按以下代码动态创建Rating控件,则点击Button后,Rating选取的值将会丢失:解决方案2
<%@ Page Language="C#" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
AjaxControlToolkit.Rating rt = new Rating();
Panel1.Controls.Add(rt);
rt.ID = "LikeRating";
rt.MaxRating = 5;
rt.CurrentRating = 2;
rt.StarCssClass = "ratingStar";
rt.WaitingStarCssClass = "savedRatingStar";
rt.FilledStarCssClass = "filledRatingStar";
rt.EmptyStarCssClass = "emptyRatingStar";
rt.BehaviorID = "hichange";
rt.CurrentRating = Convert.ToInt32(this.Hidden1.Value);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
/* Rating */.ratingStar
{
font-size: 0pt;
width: 13px;
height: 12px;
margin: 0px;
padding: 0px;
cursor: pointer;
display: block;
background-repeat: no-repeat;
}
.filledRatingStar
{
background-image: url(Images/FilledStar.png);
}
.emptyRatingStar
{
background-image: url(Images/EmptyStar.png);
}
.savedRatingStar
{
background-image: url(Images/SavedStar.png);
}
</style>
<script type="text/javascript">
function save_rate() {
var state = $find("hichange").get_Rating();
$get("Hidden1").value = state;
alert(state);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
<asp:Panel ID="Panel1" runat="server" onclick="save_rate();">
</asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />
<input id="Hidden1" runat="server" type="hidden" value="1" />
<p>
</p>
</form>
</body>
</html>
相关文章推荐
- ASP.NET AJAX Advance Tips & Tricks (2) 动态创建Rating控件不能保存ViewState的解决方案
- ASP.NET AJAX Advance Tips & Tricks (11) 三种方法动态创建Tooltip
- ASP.NET AJAX Advance Tips & Tricks (11) 三种方法动态创建Tooltip
- ASP.NET AJAX Advance Tips & Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?
- ASP.NET AJAX Advance Tips & Tricks (8) 扩展AJAX Control Toolkit中的控件
- ASP.NET 动态创建控件引起的ViewState读取问题
- ASP.NET AJAX Advance Tips & Tricks (8) 扩展AJAX Control Toolkit中的控件
- ASP.NET AJAX Advance Tips & Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?
- 文章目录:ASP.NET AJAX Advance Tips & Tricks 系列文章【共10篇】
- ASP.NET AJAX Advance Tips & Tricks (10) 解决使用AJAX Extender时的页面导出(Word/Excel)问题(Extender control 'XXX'
- ASP.NET - 动态用户控件,ViewState及事件
- ASP.NET AJAX Advance Tips & Tricks (1) CascadingDropDown在IE和Safari中的一个缺陷和解决方法
- ASP.NET AJAX Advance Tips & Tricks (5) UpdatePanel 与 jQuery
- 动态创建ASP.NET AJAX Control Toolkit中的Accordion控件
- ASP.NET AJAX Advance Tips & Tricks (7) ASP.NET AJAX 与 URLRewriting
- 在Asp.net Ajax中动态创建TabPanel控件中碰到的一个问题
- ASP.NET AJAX Advance Tips & Tricks (4) ASP.NET AJAX Performance Improvement
- ASP.NET AJAX Advance Tips & Tricks (7) ASP.NET AJAX 与 URLRewriting
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
- ASP.NET AJAX Advance Tips & Tricks (1) CascadingDropDown在IE和Safari中的一个缺陷和解决方法