2010-11-01 38 views
0

我有一个ASP.NET Image控件声明:传递值从JavaScript到ASP.NET代码隐藏

<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代码中为图像控件添加了“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所做的属性更改。

回答

1

我不希望这样工作。服务器端控件上的属性不映射到客户端的DOM属性。虽然在服务器上设置AlternateText将输出必需的alt文本,但它不是双向街道。

你可以做的是使用隐藏的服务器端控件来保持排序的状态。隐藏的<asp:checkbox>你通过JavaScript切换将做到这一点。

0

发回服务器的唯一东西是名称 - 值对。在元素中使用javascript更改的所有属性都保留在浏览器中。

+0

看起来像尼克打了我几秒钟。 – pitx3 2010-11-01 20:12:48

+0

尼克也包括解决方案。不管怎么说,还是要谢谢你 :) – acermate433s 2010-11-01 21:01:10

相关问题