我将ASP.NET Image控件声明为:
<asp:Image runat="server" ID="SortOrder"
AlternateText="Ascending"
ImageUrl="~/images/sort_ascending.gif"
CssClass="Ascending"
EnableViewState="true"
/>
我的JavaScript代码是:
function ReverseSort() {
var img = window.event.srcElement;
if(img.className == "Ascending") {
img.className = "Descending";
img.alt = "Descending";
img.src = "<%= ResolveClientUrl("~/images/sort_descending.gif") %>";
} else {
img.className = "Ascending";
img.alt = "Ascending";
img.src = "<%= ResolveClientUrl("~/images/sort_ascending.gif") %>";
}
}
我在Page_Load代码隐藏中为Image控件添加了一个“onclick”属性,如下所示:
protected void Page_Load(object sender, EventArgs e) {
if (IsPostBack)
return;
SortOrder.Attributes.Add("onclick", "ReverseSort()");
}
这是我的图像控件的SortOrder.OnClick事件:
if (SortOrder.AlternateText == "Ascending") {
/* Sort ascending */
} else {
/* Sort descending */
}
我的问题是,SortOrder.AlternateText始终是“升序”。我的代码隐藏似乎没有认识到我的javascript对属性所做的更改。
答案 0 :(得分:1)
我不希望这样做。服务器端控件上的属性不映射到客户端的DOM属性。虽然在服务器上设置AlternateText
会输出必要的alt
文本,但它不是双向的。
您可以使用隐藏的服务器端控件来保持排序状态。您通过javascript切换的隐藏<asp:checkbox>
将会执行此操作。
答案 1 :(得分:0)
回发到服务器的唯一事情是名称 - 值对。使用带有元素的javascript更改的任何属性都保留在浏览器中。