2010-11-01 83 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

相關問題