Gridview欄位上下移功能
這篇記錄gv欄位如何做到上下移的功能,這邊用的方法是直接在DB加一個欄位叫order來記錄資料的順序,此做法資料做刪除時,建議不要真的刪除,做update讓他不會在網頁顯示出來就好,不然在處理順序時會出問題,以上移功能做範例。
前端就不描述了,拉法跟前面兩篇類似
前端就不描述了,拉法跟前面兩篇類似
後端
一樣我們當按點擊時,我們先找到是哪一個row的資料,並且去找到他的主鍵(seq),再用他的主鍵去下SQL找他的order,找到後若不是第一筆開始做交換的動作,記錄這筆order與上一筆order,再用上一筆order去找上一筆的主鍵,之後做交換的動作db.update()
protected void lbtn_up_Click(object sender, EventArgs e)
{
LinkButton lbtn = (LinkButton)sender;
GridViewRow row = (GridViewRow)lbtn.Parent.Parent;
int rows = row.RowIndex;
HiddenField seq = (HiddenField)gv1.Rows[rows].FindControl("seq");
DataSet ds = dal.select(seq.Value.Trim());
if (ds.Tables[0].Rows[0]["order"].ToString().Trim() =="1")
{
string script = "window.alert('已經是第一筆資料');";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "送出", script, false);
}
else
{
string thisorder = ds.Tables[0].Rows[0]["order"].ToString().Trim(); //此筆的order
int lastorder = Convert.ToInt32(thisorder) - 1; //上一筆的order
DataSet ds1 = dal.select(Convert.ToString(lastorder));
string lastseq = ds1.Tables[0].Rows[0]["seq"].ToString().Trim(); //上一筆的seq
string thisseq = seq.Value.Trim(); //此筆的seq
db.update(thisseq, lastseq, thisorder, Convert.ToString(lastorder)); //丟進去下SQL語法,
BindData();
}
}
SQL語法
邏輯就是原本這筆資料,順序改成上一筆的順序,上筆資料,順序改成本筆資料的順序。
update table
set order=@lastorder
where seq=@thisseq
update table
set order=@thisorder
where seq=@lastseq
留言
張貼留言