2010-08-17 27 views
0

我有一個字母過濾器,包含26個動態創建的鏈接按鈕,選擇任何鏈接按鈕,它將過濾用戶名字母並將其顏色更改爲橙​​色使它不同於其他鏈接按鈕它工作正常,但如果有更多的用戶與特定的字母表相關聯,並且在應用過濾器時,它將基於該字母過濾用戶,並在單擊數據分頁器的列表視圖中顯示它們下一個頁面或任何其他頁面數量的鏈接按鈕改變其顏色爲默認顏色,但我想繼續保持高亮選中之前,除非其他鏈接按鈕 我的代碼當任何數據尋呼機事件發生時,鏈接按鈕改變顏色

protected void Page_Init(object sender, EventArgs e) 
    { 
     // Adding Dynamically linkbuttons for all alphabets(i.e. A-Z) 
     for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++) 
     { 
      LinkButton lbtnCharacter = new LinkButton(); 
      lbtnCharacter.ID = "lbtnCharacter" + asciiValue; 
      divAlphabets.Controls.Add(lbtnCharacter); 

      // Setting the properties of dynamically created Linkbutton. 
      lbtnCharacter.Text = Convert.ToString(asciiValue); 
      lbtnCharacter.CssClass = "firstCharacter"; 
      lbtnCharacter.ToolTip = "Show Tags starting with '" + Convert.ToString(asciiValue) + "'"; 
      lbtnCharacter.CommandArgument = Convert.ToString(asciiValue); 
      lbtnCharacter.Command += new CommandEventHandler(lbtnCharacter_Command); 
     } 
    } 



// For assigning default color to linkbutton text in page load 
     foreach (var ctrl in divAlphabets.Controls) 
     { 
      if (ctrl is LinkButton) 
      ((LinkButton)ctrl).CssClass = "firstCharacter"; 
     } 

void lbtnCharacter_Command(object sender, CommandEventArgs e) 
     { 
      // Storing the values of pressed alphabet in viewstate. 
      ViewState["Selected_Character"] = e.CommandArgument; 
      LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument); 
      lbtnSelected.CssClass = "firstCharacter highlighted"; 
      txtTagFilter.Text = string.Empty; 

      BindTagList(); 
     } 

回答

1

我希望我能理解你的問題。

您正在將您的Selected_Character項目設置爲命令處理程序,然後設置按鈕的類以突出顯示它。只有當按鈕被點擊時,纔會被觸發,而不是在移動到下一頁時。爲什麼不分開這兩個操作。如果Selected_Character匹配,請在prerender上設置鏈接按鈕的類。這種方式即使你頁面的鏈接按鈕將保持突出顯示。

我還會將您選擇的字符設置爲查詢字符串參數,如果有人複製並粘貼鏈接到您的頁面,則按鈕不會突出顯示,並且不會顯示正確的數據。

希望這會有所幫助。

編輯:沒有測試下面,但也許它會讓你開始。

void lbtnCharacter_Command(object sender, CommandEventArgs e) 
{ 
    // redirect to self with tag as qs parameter 
    Response.Redirect(string.Format("{0}?tag={1}", Request.Url.GetLeftPart(UriPartial.Path), e.CommandArgument)); 
} 

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    if (Request.QueryString["tag"] != null) { 
     LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + Request.QueryString["tag"]); 
     lbtnSelected.CssClass = "firstCharacter highlighted"; 
    } 
} 

N.B你還需要改變你的BindTagList使用的查詢字符串也。我假設你在頁面加載事件中調用了這個。

相關問題