2013-10-01 52 views
0

嗨我有一个网格在我的aspx页面。当用户点击网格中的向上移动和向下移动按钮时,网格行应该上下移动。 enter image description hereGridview向上和向下

我禁用第一行“UP”按钮以及最后一行“DOWN”按钮。

这工作正常,但是当我向网格插入“PAGING”上下移动只能在该页面中工作。例如,我不能将我的第二页数据移动到第一页。

每页顶行上下按钮禁用。所以我不能移动我的第三页行数据到第一页。

这里是我的代码..

protected void BindGridview() 
    { 
     con.Open(); 
     //cmd = new SqlCommand("select * from MobileDetails order by Priority asc", con); 
     cmd = new SqlCommand("select IDCHECKITEM,CHECKITEM,DESCRIPTION,SORTORDER from CHECKITEM order by SORTORDER asc", con);    
     da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     con.Close(); 
     gvUserInfo.DataSource = ds; 
     gvUserInfo.DataBind(); 
     GridViewRow FirstRow = gvUserInfo.Rows[0]; 
     Button btnUp = (Button)FirstRow.FindControl("btnUp"); 
     btnUp.Enabled = false; 
     GridViewRow LastRow = gvUserInfo.Rows[gvUserInfo.Rows.Count - 1]; 
     Button btnDown = (Button)LastRow.FindControl("btnDown"); 
     btnDown.Enabled = false; 
    }   

    protected void gvUserInfo_RowDataCommand(object sender, GridViewCommandEventArgs e) 
    { 
     int index = 0; 
     GridViewRow gvrow; 
     GridViewRow previousRow; 
     if (e.CommandName == "Up") 
     { 
      index = Convert.ToInt32(e.CommandArgument); 
      gvrow = gvUserInfo.Rows[index]; 
      previousRow = gvUserInfo.Rows[index - 1]; 
      int mobilesort = Convert.ToInt32(gvUserInfo.DataKeys[gvrow.RowIndex].Value.ToString()); 
      //int mobilePriority = Convert.ToInt32(gvUserInfo.DataKeys[gvrow.RowIndex].Value.ToString()); 
      int mobileId = Convert.ToInt32(gvrow.Cells[0].Text); 
      int previousId = Convert.ToInt32(previousRow.Cells[0].Text); 
      con.Open(); 
      cmd = new SqlCommand("update CHECKITEM set SORTORDER='" + (mobilesort - 1) + "' where IDCHECKITEM='" + mobileId + "'; update CHECKITEM set SORTORDER='" + (mobilesort) + "' where IDCHECKITEM='" + previousId + "'", con); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     if (e.CommandName == "Down") 
     { 
      index = Convert.ToInt32(e.CommandArgument); 
      gvrow = gvUserInfo.Rows[index]; 
      previousRow = gvUserInfo.Rows[index + 1]; 
      int mobilesort = Convert.ToInt32(gvUserInfo.DataKeys[gvrow.RowIndex].Value.ToString()); 
      int mobileId = Convert.ToInt32(gvrow.Cells[0].Text); 
      int previousId = Convert.ToInt32(previousRow.Cells[0].Text); 
      con.Open(); 
      cmd = new SqlCommand("update CHECKITEM set SORTORDER='" + (mobilesort + 1) + "' where IDCHECKITEM='" + mobileId + "'; update CHECKITEM set SORTORDER='" + (mobilesort) + "' where IDCHECKITEM='" + previousId + "'", con); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     BindGridview(); 
    } 

    protected void gvUserInfo_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     gvUserInfo.PageIndex = e.NewPageIndex; 
     BindGridview(); 
    } 

回答

0

我觉得你应该这样做:请启用每一行按键,除了最后一排I,E当寻呼指数结束。 U可以利用count来做到这一点,并为列表的第一项做同样的事情。希望这会对你有所帮助。