摘要:用ListBox幫Gridview作手動排序功能
目前有一個功能需求是希望把Gridview排序時常更動,這時候想到用ListBox來做這項功能。但是不知道該如何下手,只好問廣大的朋友們。
該如何實作這項功能?他就丟了這個MSDN的範例給我看一下。ListItem 類別,接下來實作這個範例 。
程式碼也要有DataTable作為資料表格 而DataView 是專門供排序、篩選、搜尋、編輯
先用圖片步驟顯示一開始我們先把資料庫內的資料撈出來
接下來我們來看一下網頁資料
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Configuration;
namespace WebApplication3
{
public partial class WebForm3 : System.Web.UI.Page
{
private DataView dv;
private DataTable dt = new DataTable();
string strConn= WebConfigurationManager.ConnectionStrings ["password"].ConnectionString;
SqlDataSource SqlSource = new SqlDataSource();
protected void Page_Load(object sender, EventArgs e)
{
string StrSql = "select*from password order by id asc";
SqlSource = new SqlDataSource(strConn, StrSql);
if (!IsPostBack)
{
ListBox1.DataSource = SqlSource;
ListBox1.DataValueField = "id";
ListBox1.DataTextField = "body";
ListBox1.DataBind();
}
if (Session["data"] == null)
{
/*建立一個id欄位*/
dt.Columns.Add(new DataColumn("id"));
dt.Columns.Add(new DataColumn("body"));
/*DataTable 給session暫存*/
Session["data"] = dt;
/*利用DataView作排序功能*/
dv = new DataView(dt);
ListBox2.DataSource = dv;
ListBox2.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
for(int i=0;i< ListBox2.Items.Count; i++)
{
int ids = i + 1;
string id = ids.ToString();
string name = ListBox2.Items[i].Text;
SqlSource.UpdateParameters .Add("id" ,id );
SqlSource.UpdateParameters.Add("body", name);
/**SqlSource.UpdateCommand = "update password set id=@id where body=@body"<=這樣寫法一直寫不進去資料庫;/
SqlSource.UpdateCommand = "update password set id="+id+" where body='"+name+"'";
int affow = SqlSource.Update ();
SqlSource.UpdateParameters .Clear();
}
}
}
}