2011-07-27 42 views
2

我有一個gridview報頭內顯示上的web部件數據,具有了LinkBut​​ton以允許由不同的字段分選(與將在爲每列不同的自定義排序方法)的GridView頭的LinkBut​​ton不更新

按鈕作品很好,但在點擊處理程序中,它會更改文本,命令名稱和字體。

這從來沒有工作(即沒有更改發生在按鈕上),是否有任何理由它不應該工作?

的GridView ASCX:

<asp:GridView ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="false" 
    AllowSorting="False"> 
    <HeaderStyle /> 
    <RowStyle /> 
    <Columns> 
     <asp:TemplateField> 
      <HeaderTemplate> 
       <table> 
        <tr> 
         <td> 
          <a>Name</a> 
          <asp:LinkButton ID="btnNameSort" runat="server" Text="Sort Ascending" OnClick="btnNameSort_Click" CommandName="asc" /> 
        </tr> 
       </table> 
      </HeaderTemplate> 
      <ItemTemplate> 
       ... Item code 
      </ItemTemplate> 

這是後面的代碼:我想在GridView正在重新呈現

public void btnNameSort_Click(object sender, EventArgs e) 
    { 
     LinkButton btn = (LinkButton)GridView1.HeaderRow.FindControl("btnNameSort"); 
     if (btn.CommandName == "asc") 
     { 
      btn.Text = "Sort Descending"; 
      btn.Font.Bold = true; 
      btn.CommandName = "desc"; 
      updateGridView1(true, "title"); 
     } 
     else 
     { 
      btn.Text = "Sort Ascending"; 
      updateGridView1(false, "title"); 
     } 

回答

0

和你做不堅持的變化。我的猜測是在updateGridView中有一個DataBind方法..對嗎?我認爲你應該通過在ViewState屬性中存儲排序方向和排序列來設置文本。當GridView被反彈時,您可以訪問那些現在將持久化的屬性。

順便說一句 - 我認爲這是一個非常好的問題。您也可以訂閱ItemCreated處理程序並獲取標題。如果您的排序方向存儲在視圖狀態中,並且您的排序列存儲在視圖狀態中,您可以找到您要查找的單元格並相應地進行調整。

+0

這工作對我來說,我添加了參數到視圖狀態(即文本,命令和粗體),然後在Gridview1_DataBound方法讀取這些關閉,謝謝你的幫助 – Nymain

+0

@Nymain - 我的榮幸,你能標記我的答案一個正確的:) –

相關問題