.NET基礎之GridView控制元件

iDotNetSpace發表於2009-05-25

GridView控制元件是.net裡的一個顯示資料控制元件,該控制元件製作很人性化,基本上不用編寫程式碼就可以完成資料繫結、分頁、排序、編輯、刪除、選定行等操作。

主要屬性:
Sort:根據指定的排序表示式和方向對 GridView 控制元件進行排序。

程式設計的方法繫結資料,並實現分頁
頁面原始碼中新增一個GridView控制元件(GridView1),並AllowPaging="True",設定PageIndexChanging事件。
cs程式碼: Code
protected void bind()
    {
        //此處為GridView1繫結資料庫
        SqlConnection myConn = GetConnection();
        myConn.Open();
        string sqlStr = "select * from test";
        SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn);
        DataSet myDs = new DataSet();
        myDa.Fill(myDs);
        GridView1.DataSource = myDs;
        GridView1.DataBind();
    }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        this.bind();
    }

 

程式設計方法實現排序
頁面原始碼中新增一個GridView控制元件(GridView1),並設定GridView1的Sorting事件。
cs程式碼:

Code
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //設定資訊字典,排序欄位和排序方法
            ViewState["SortOrder"] = "ID";
            ViewState["OrderDire"] = "ASC";
            this.bind();
        }
    }
public SqlConnection GetConnection()
    {
        //讀取web.config中的連線字串,建立SqlConnection連線
        string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
        SqlConnection myConn = new SqlConnection(myStr);
        return myConn;
    }
    protected void bind()
    {
        //此處為GridView1繫結資料庫
        SqlConnection myConn = GetConnection();
        myConn.Open();
        string sqlStr = "select * from test";
        SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn);
        DataSet myDs = new DataSet();
        myDa.Fill(myDs);

        //設定排序所用的欄位和排序方法
        string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
        GridView1.Sort = sort;
        GridView1.DataSource = myDs;
        GridView1.DataBind();
    }
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {

        //獲取排序的欄位
        string sPage = e.SortExpression;

        //如果目前排序方式與設定一致,則逆序
        if (ViewState["SortOrder"].ToString() == sPage)
        {
            if (ViewState["OrderDire"].ToString() == "Desc")
            {
                ViewState["OrderDire"] = "ASC";
            }
            else
            {
                ViewState["OrderDire"] = "Desc";
            }
        }
        else
        {
            ViewState["SortOrder"] = e.SortExpression;
        }
        this.bind();
    }


 選擇GridView控制元件的行,在另一個GridView控制元件中顯示相關資料
頁面原始碼中新增兩個GridView控制元件(GridView1,GridView2),並設定GridView1的SelectedIndexChanging事件。GridView1已經繫結了一個資料表,當點選GridView1一行時,在GridView2中顯示相關的另一張表中的資料。
cs程式碼:

Code
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        //提交編輯時,先取得要編輯行的主鍵值
        int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
        string sqlStr = "delete from test where ID=" + ID;
        SqlConnection con = new SqlConnection();
        //讀取web.config中的連線字串,建立SqlConnection連線
        con.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
        SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn);
        DataSet myDs = new DataSet();
        myDa.Fill(myDs);
        //將資料表繫結到GridView2
        this.GridView2.DataSource = myDs;
        GridView2.DataBind();
    }

 
程式設計實現全選和全不選功能

頁面原始碼中新增兩個GridView控制元件(GridView1),一個CheckBox控制元件(CheckBox1),設定CheckBox控制元件的AutoPostBack="True" ,為GridView1新增一個TemplateField列,並在編輯模版中為該列新增一個CheckBox 控制元件:。設定CheckBox的CheckedChanged事件。
cs程式碼: Code
public SqlConnection GetConnection()
   {
       //讀取web.config中的連線字串,建立SqlConnection連線
       string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
       SqlConnection myConn = new SqlConnection(myStr);
       return myConn;
   }
   protected void bind()
   {
       //此處為GridView1繫結資料庫
       SqlConnection myConn = GetConnection();
       myConn.Open();
       string sqlStr = "select * from test";
       SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn);
       DataSet myDs = new DataSet();
       myDa.Fill(myDs);
       GridView1.DataSource = myDs;
       GridView1.DataBind();
       //釋放並關閉連線
       myDa.Dispose();
       myDs.Dispose();
       myConn.Close();
   }
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("Check");
            if (CheckBox1.Checked == true)
            {
                //全選
                CheckBox1.Checked = true;
            }
            else
            {
                //反選
                CheckBox1.Checked = false;
            }
        }
    }

原文:http://www.cnblogs.com/shanymen/archive/2009/05/21/1486654.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-604087/,如需轉載,請註明出處,否則將追究法律責任。

相關文章