2011-11-11 60 views
0

與gridview的排序一個更新面板內我有一個網格表,這是我做在頁面加載在asp.net

if (!IsPostBack) 
       { 
        BindGridViewUsers(msgID); 
       } 

網格視圖是一個更新面板內側和我更新面板數據綁定每3秒

<asp:UpdatePanel ID="holder" runat="server"> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
       </Triggers> 
       <ContentTemplate> 

的計時器滴答做的每3秒數據綁定

protected void Timer_Tick(object sender, EventArgs args) 
    { 
     String MsgID = HttpContext.Current.Request.QueryString["MsgID"]; 
     int msgID = Convert.ToInt32(MsgID); 
     BindGridViewUsers(msgID); 
    } 

,我也啓用sortin g,但排序只保留3秒,然後完成數據綁定並恢復原始表,即使更新到表後,如何保留排序。

<asp:BoundField DataField="TimeRead" ItemStyle-Width="25%" HeaderText="TimeRead" 
            SortExpression="TimeRead" /> 
           <asp:BoundField DataField="Name" ItemStyle-Width="45%" HeaderText="Name" SortExpression="Name" /> 
           <asp:BoundField DataField="Email" ItemStyle-Width="45%" HeaderText="Email" SortExpression="Email"> 

排序:

private void SortGridView(string sortExpression, string direction) 
{ 
    String MsgID = HttpContext.Current.Request.QueryString["MsgID"]; 
    DataTable dataTable = BindGridViewUsers(Convert.ToInt32(MsgID)).Tables[0]; 
    if (dataTable != null) 
    { 
     DataView dataView = new DataView(dataTable); 
     dataView.Sort = sortExpression + direction; 
     Grid_UserTable.DataSource = dataView; 
     Grid_UserTable.DataBind(); 
    } 
} 
+0

由於您正在對網格進行所有現有數據排序,因此您需要從Timer_Tick方法中調用SortGridView方法。 – Lloyd

回答

0

當你調用SortGridView()方法,我們傳遞兩個參數的SortExpression和方向

剛剛宣佈在頁面級別的靜態變量,併爲其分配一個方向改變在該方法中的方向

if (direction.Equals("ASC")) 
     direction = "DESC"; 
else 
     direction = "ASC"; 

並對Datavie W上。

希望這個作品!