2013-03-14 52 views
0

我做了一個用戶控件(.ascx)由一個包含六個按鈕的div組成。 它有一個字符串屬性「selectedButton」,其中包含一個按鈕的ID的值。如何獲取在ASP.NET的用戶控件中使用其ID的按鈕?

我想要做的是能夠在頁面加載時更改ID對應於selectedButton屬性的按鈕的背景顏色。

現在我在selectedButton屬性的值做在ascx.cs開關,像這樣:

switch (selectedButton) 
{ 
    case "Button1": 
    Button1.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00"); 
    break; 
    //etc... 
} 

它的工作原理,但似乎並沒有非常有效的,也不是動態我應該有更多的按鈕。

我已經試過把這個在ASCX來源:

<script type="text/javascript"> 
    var sb = document.getElementById("<%=this.selectedButton %>"); 
    sb.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00"); 
</script> 

但沒有任何結果。

在此先感謝。

回答

1

答案取決於什麼selectedButton包含。如果它包含服務器端的ID(從您的代碼段,這似乎是的情況下),比你可以在代碼中使用FindControl背後:

Button button = this.FindControl(selectedButton) as Button; 
if (button != null) 
{ 
    button.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00"); 
} 

然而,如果selectedButton包含客戶端ID(就是那個ASP .NET爲每個控件生成),那麼你應該去與一些javascript:

<script type="text/javascript"> 
    var sb = document.getElementById("<%= this.selectedButton %>"); 
    sb.style['background-color'] = '#00CC00'; 
</script> 
+0

你的答案的第一部分正是我正在尋找的。我從ASP.Net開始,因此服務器端和客戶端的概念仍然有點模糊。它工作得很好,非常感謝! – Streltsov 2013-03-14 16:02:53

+0

@PrimsFr,你可能想查看關於請求生命週期和頁面生命週期的一兩件事 - 這些是webdev和ASP.NET的基礎知識。 – Andrei 2013-03-14 16:17:16

0

您正試圖將serverside與客戶端代碼混合使用。這是行不通的。

如果您希望在客戶端沒有往返回服務器的情況下對其進行更改,請使用純javascript。這意味着您不能在此處使用this.selectedButtonSystem.Drawing.ColorTranslator或任何其他C#代碼。

使用純JavaScript解決方案來改變顏色,你會發現很多如何。

0

試試這個:

<script type="text/javascript"> 
    var sb = document.getElementById("<%=this.Button1.ClientID %>"); 
    sb.style.backgroundColor = "<%= System.Drawing.ColorTranslator.FromHtml("#00CC00") %>)"; 
</script> 

發現,這裏:http://forums.asp.net/t/1320687.aspx/1

但這SO職位是什麼,我其實是在尋找:Passing ASP.NET client IDs in to a javascript function

他們使用UNIQUEID但是從內存中,客戶端ID是解決方案正確

+0

這仍然不正確的JS,沒有辦法,這將工作。 – magnattic 2013-03-14 15:51:23

+0

我相信它已經工作,並且會繼續工作。那麼,你必須妥善連接,我不相信我在這裏完成,讓我更新它。 – 2013-03-14 15:52:48

+1

好吧,那麼我很想看看你是如何在js解釋器中執行第二行純C#的。 – magnattic 2013-03-14 15:54:12

相關問題