2014年7月13日 星期日

[RESOLVED] Sorting problem in DataGrid


Hii All,


actually my problem is that I am using data grid (not gridview) in web application. The coloumns of data grid is dynamic and also set the autogeneratecoloumn="true" and also allow sortinng="true" but when I am trying to sort the coloumn
then no effect,,,,,,,


why is it so?????


Please help me ,,,,, I want to sort the colomns in the datagrid


Thanxxx in advance



hi, to do gridview sorting you need to set SortExpression in the grid's boundfields and templatefields and you need to write code in GridView_Sorting event. refer below links


http://forums.asp.net/t/1775129.aspx/1?BoundField+Can+t+be+Sorted


http://forums.asp.net/t/1887880.aspx/1?Datatable+sort+and+remove+sorting


http://forums.asp.net/t/1912069.aspx/1?How+to+sort+last+five+digits+in+Gridview



Hi,


showing some code would likely help.


As of ASP.NET 2.0 the datagrid control became rather obsolete so likely it's better to make use of a newer control if possible.


Grz, Kris.



Maybe you call binding in page_load event, place it in if(!ispostback) block



Hello All


This is the aspx code


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddUser.aspx.cs" Inherits="e_terra.Admin.AddUser" %>











   

   

    

   



   



   




       


           


       


    

        



            user updation

        



        



        





           


                





               

                   

                       

                       

                       

                       

                   

                   

                       

                       

                       

                       

                   

                   

                       

                       

                       

                       

                   

                   

                       

                       

                       

                       

                   

                   

                       

                        

                       

                       

                       

                   

                   

                       

                       

                       

                       

                   

                   

                       

                       

                       

                       

                        

                   

               


                           

                       


                           

                            

                       


                           

                       


                           

                            

                            

                       


                           

                       


                           

                            

                       


                           

                       


                           

                                onselectedindexchanged="user_role_SelectedIndexChanged"   >

                           


                            

                       


                           

                       


                           

                            

                       


                           

                       


                           

                                onselectedindexchanged="manager_desig_SelectedIndexChanged" >

                                

                           




                            

                       


                           

                       


                           

                            

                       


                           

                       


                           

                            

                           

                       


                           

                       


                           

                       


                           

                       


                           

                            

                       


                           

                       


                           

                            

                       


                           

                       


                           

                            

                       


                           

                       


                           

                            

                       


                             


                            

                       


                





           




           


           


           




           




           


                

               
                    onclick="Button1_Click" />

                

               
                    onclick="Button2_Click" />

                

               
                    onclick="Button3_Click" />

                

               

               

            


            


             

            


             

                 

                 

                   

                         BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1"


                         Width="100%" oneditcommand="DataGrid_EditCommand"

                         onpageindexchanged="DataGrid_PageIndexChanged" AllowPaging="True"

                         PageSize="3" Font-Bold="False" Font-Italic="False"

                         Font-Overline="False" Font-Size="Smaller" Font-Strikeout="False"


                         Font-Underline="False" HorizontalAlign="Left" onitemcreated="DataGrid_ItemCreated"


                        onitemdatabound="DataGrid_ItemDataBound" AllowSorting="True">

                         

                       

                            Font-Overline="False" Font-Size="Smaller" Font-Strikeout="False"


                            Font-Underline="False" />

                       

                           

                                SortExpression="SortColoumn" >

                           


                       


                       

                            Font-Size="Smaller" Font-Strikeout="False" Font-Underline="False" />

                       

                        

                       

                       

                            Font-Italic="False" Font-Overline="False" Font-Size="Smaller"


                            Font-Strikeout="False" Font-Underline="False" />

                       

                            Mode="NumericPages" />

                       

                            Font-Italic="False" Font-Overline="False" Font-Size="Smaller"


                            Font-Strikeout="False" Font-Underline="False" />

                   


                    

                 

                 

            






   


   








And the code behind is


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient;

using System.Web.Security;







namespace e_terra.Admin

{

    



    public partial class AddUser : System.Web.UI.Page

    {

        int iUserRole = 0;

        int iMgrDesig = 0;

        string Query;

        static string OldUserName;

        static string SortQueryForDataGrid;

        static string QueryForDataGrid;



        SqlConnection conn = new SqlConnection("Data Source=GWAY; Initial Catalog=eterrareports;User ID=sa;Password=Alstom123;Integrated Security=true");



        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                QueryForDataGrid = "select tab1.un1,tab1.ufn1,tab1.udes1,tab1.curole1,tab1.umn1,tab2.cmgrdsg2,tab1.uph1,tab1.umob1,tab1.uorg1," +

                    " tab1.ussarea1,tab1.umail1,tab1.ud1 from (SELECT u1.user_name un1,u1.user_fullname ufn1, " +

                    " u1.user_designation udes1, cl1.class_value curole1,u1.user_mgrname umn1, u1.user_phone uph1,  u1.user_mobile umob1," +

                    " u1.user_organisation uorg1,u1.user_substationarea ussarea1,  u1.user_email umail1, u1.updated_date ud1 " +

                    " FROM  user_master u1,class_MASTER cl1 where u1.USER_ROLE = cl1.class_id )tab1, " +

                    " (SELECT u2.user_name un2, cl2.class_value cmgrdsg2 " +

                    " fROM  user_master u2,class_MASTER cl2 where u2.user_mgrdesig = cl2.class_id  )tab2 "+

                    " where tab1.un1=tab2.un2 ";





                SortQueryForDataGrid = QueryForDataGrid + "order by tab1.un1";

                DisplayDataInGrid();

                RoleAndDesig();

                OldUserName = "";



            }



            //DataGrid.Attributes.Add("style", "word-break:break-all;word-wrap:normal");



            /*    user.Attributes.Add("autocomplete", "off");

            full_name.Attributes.Add("autocomplete", "off");

            desig.Attributes.Add("autocomplete", "off");

            manager.Attributes.Add("autocomplete", "off");

            phone.Attributes.Add("autocomplete", "off");

            mobile.Attributes.Add("autocomplete", "off");

            org.Attributes.Add("autocomplete", "off");

            area.Attributes.Add("autocomplete", "off");

            email_id.Attributes.Add("autocomplete", "off");

            */



            

        }



        private void RoleAndDesig()             // for populate the dropdown list

        {

            int i;



            try

            {

                conn.Open();

                Query = "select CLASS_ID,CLASS_VALUE from CLASS_MASTER where CLASS_CATEGORY='USER_ROLE'";

                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                SqlDataReader SqlRead = SqlCmd.ExecuteReader();

                i = 0;

                user_role.Items.Clear();

                user_role.Items.Add("----Select User Role----");

                while (SqlRead.Read())

                {

                    user_role.Items.Add(SqlRead.GetString(1).ToString());

                    i = i + 1;

                }

                SqlRead.Close();

                SqlCmd.Dispose();

            }

            catch (Exception ex)

            {



            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();

                }

            }





            try

            {

                conn.Open();

                Query = "select CLASS_ID,CLASS_VALUE from CLASS_MASTER where CLASS_CATEGORY='MANAGER_DESIGNATION'";

                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                SqlDataReader SqlRead = SqlCmd.ExecuteReader();

                i = 0;

                manager_desig.Items.Clear();

                manager_desig.Items.Add("----Select Manager Designation-----");

                while (SqlRead.Read())

                {

                    manager_desig.Items.Add(SqlRead.GetString(1).ToString());

                    i = i + 1;

                }

                SqlRead.Close();

                SqlCmd.Dispose();

            }

            catch (Exception ex)

            {



            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();



                }

            }



        }

        

        protected int GetClassID(string s1, string s2)

        {

            int GetClassID=0 ;



            try

            {

                conn.Open();



                Query = "Select CLASS_ID from CLASS_MASTER where CLASS_CATEGORY ='" + s1 + "' and CLASS_VALUE='" + s2 + "'";

                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                SqlDataReader SqlRead = SqlCmd.ExecuteReader();





                while (SqlRead.Read())

                {

                    GetClassID = SqlRead.GetInt32(0);

                }

                SqlRead.Close();

                SqlCmd.Dispose();



            }

            catch (Exception ex)

            {

                // Label1.Text = "done";

            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();

                }

            }



            return GetClassID;



        }



        private void DisplayDataInGrid()             // to display the data in datagrid

        {

            try

            {

                conn.Open();

                

                SqlDataAdapter SqlAdapt = new SqlDataAdapter(SortQueryForDataGrid, conn);

                DataSet dset = new DataSet();

                SqlAdapt.Fill(dset);

                dset.Dispose();

                SqlAdapt.Dispose();

                DataGrid.DataSource = dset;

                DataGrid.DataBind();

                

            }

            catch (Exception ex)

            {



            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();

                }

            }

        }



        



        private void ClearData()            // for clear selection

        {

            user.Text = "";

            full_name.Text = "";

            password.Text = "";

            confirm.Text = "";

            desig.Text = "";

            user_role.ClearSelection();

            manager.Text = "";

            manager_desig.ClearSelection();

            phone.Text = "";

            mobile.Text = "";

            org.Text = "";

            area.Text = "";

            email_id.Text = "";

            OldUserName = "";

        }



        





        protected void DataGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)   

        {

            DataGrid.CurrentPageIndex = e.NewPageIndex;

            DisplayDataInGrid();

        }



        protected void DataGrid_EditCommand(object source, DataGridCommandEventArgs e)   // for editing the gridview row

        {

            ClearData();



            user.Text = e.Item.Cells[1].Text;

            OldUserName=e.Item.Cells[1].Text.Trim();



            if (e.Item.Cells[2].Text.ToUpper().Trim() != " ")

                full_name.Text = e.Item.Cells[2].Text;



            if (e.Item.Cells[3].Text.ToUpper().Trim() != " ")

                desig.Text = e.Item.Cells[3].Text;



            user_role.ClearSelection();

            user_role.SelectedItem.Text = e.Item.Cells[4].Text.Trim();



            if (e.Item.Cells[5].Text.ToUpper().Trim()!=" ")

                manager.Text=e.Item.Cells[5].Text;



            manager_desig.ClearSelection();

            manager_desig.SelectedItem.Text = e.Item.Cells[6].Text.Trim();



            if (e.Item.Cells[7].Text.ToUpper().Trim() != " ")

                phone.Text = e.Item.Cells[7].Text;



            if (e.Item.Cells[8].Text.ToUpper().Trim() != " ")

                mobile.Text = e.Item.Cells[8].Text;



            if (e.Item.Cells[9].Text.ToUpper().Trim() != " ")

                org.Text = e.Item.Cells[9].Text;



            if (e.Item.Cells[10].Text.ToUpper().Trim() != " ")

                area.Text = e.Item.Cells[10].Text;



            if (e.Item.Cells[11].Text.ToUpper().Trim() != " ")

                email_id.Text = e.Item.Cells[11].Text;



            

        }



        protected void user_role_SelectedIndexChanged(object sender, EventArgs e)    // to get the class Id of the dropdown list

        {

            try

            {

                conn.Open();



                Query = "Select CLASS_ID from CLASS_MASTER where CLASS_CATEGORY ='USER_ROLE' and CLASS_VALUE='" + user_role.SelectedItem.Text.ToString() + "'";

                SqlCommand SqlCmd = new SqlCommand(Query,conn);

                SqlDataReader SqlRead = SqlCmd.ExecuteReader();



                while (SqlRead.Read())

                {

                    iUserRole = SqlRead.GetInt32(0);    

                }

                SqlRead.Close();

                SqlCmd.Dispose();

            }

            catch (Exception ex)

            {



            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();

                }

            }



        }



        protected void manager_desig_SelectedIndexChanged(object sender, EventArgs e)   // to get the class Id of the dropdown list

        {

            try

            {

                conn.Open();



                Query = "Select CLASS_ID from CLASS_MASTER where CLASS_CATEGORY ='MANAGER_DESIGNATION' and CLASS_VALUE='" + manager_desig.SelectedItem.Text.ToString() + "'";

                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                SqlDataReader SqlRead = SqlCmd.ExecuteReader();



                while (SqlRead.Read())

                {

                    iMgrDesig = SqlRead.GetInt32(0);

                }

                SqlRead.Close();

                SqlCmd.Dispose();

            }

            catch (Exception ex)

            {



            }

            finally

            {

                if (conn.State == ConnectionState.Open)

                {

                    conn.Close();

                }

            }

        }



        protected void Button1_Click(object sender, EventArgs e)        // to save the user details

        {

            int RecFound = 0;

            



            if (iUserRole == 0 || iMgrDesig == 0)

            {

                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('User Role or Manager Designation not selected');", true);

            }

            else

            {

                string strDate = DateTime.Now.ToString("dd-MMM-yyyy hh:mm:ss tt");



                if (strDate.Substring((strDate.Length - 2), 2) == "AM")

                    strDate = strDate.Replace("AM", "A.M.");

                else if (strDate.Substring((strDate.Length - 2), 2) == "PM")

                    strDate = strDate.Replace("PM", "P.M.");





                try

                {

                    conn.Open();

                    Query = "select count(user_name) from user_master where user_name='" + user.Text.ToString().Trim().ToUpper() + "'";

                    SqlCommand SqlCmd = new SqlCommand(Query, conn);

                    SqlDataReader SqlRead = SqlCmd.ExecuteReader();

                    while (SqlRead.Read())

                    {

                        RecFound = SqlRead.GetInt32(0);

                    }

                    SqlRead.Close();

                    SqlCmd.Dispose();



                }

                catch (Exception ex)

                {



                }

                finally

                {

                    if (conn.State == ConnectionState.Open)

                    {

                        conn.Close();

                    }

                }



                if (RecFound == 0)

                {

                    try

                    {

                        conn.Open();



                        Query = "Insert into User_Master(USER_NAME,USER_PASSWORD,USER_FULLNAME,USER_DESIGNATION," +

                                " USER_ROLE,USER_MGRDESIG,USER_MGRNAME,USER_PHONE,USER_MOBILE,USER_ORGANISATION," +

                                " USER_SUBSTATIONAREA,USER_EMAIL,Updated_Date) values('" +

                                user.Text.ToString().Trim().ToUpper() + "','" + password.Text.ToString().Trim() + "','" +

                                full_name.Text.ToString().Trim().ToUpper() + "','" + desig.Text.ToString().Trim().ToUpper() + "'," +

                                iUserRole + "," + iMgrDesig + ",'" + manager.Text.ToString().Trim().ToUpper() + "','" + phone.Text.ToString().Trim() + "','" +

                                mobile.Text.ToString().Trim() + "','" + org.Text.ToString().Trim().ToUpper() + "','" +

                                area.Text.ToString().Trim().ToUpper() + "','" +

                                email_id.Text.ToString().Trim() + "','" + DateTime.Now + "')";



                        SqlCommand SqlCmd = new SqlCommand(Query, conn);

                        SqlCmd.ExecuteNonQuery();

                        SqlCmd.Dispose();

                        ClearData();

                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record Added Succesfully');", true);

                        DataGrid.DataBind();

                    }

                    catch (Exception ex)

                    {

                    }

                    finally

                    {

                        if (conn.State == ConnectionState.Open)

                        {

                            conn.Close();

                        }

                    }

                }



                else

                {

                    ClearData();

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record Already Exists');", true);

                }





                DisplayDataInGrid();



            }

        }



        protected void Button2_Click(object sender, EventArgs e)

        {

            if (OldUserName.Trim().Length == 0)

            {

                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record Not Found for updation');", true);

            }

            else

            {



                int RecFound = 0;

                int UserId = 0;

                int MgrId = 0;



                UserId = GetClassID("USER_ROLE", user_role.SelectedItem.ToString());

                MgrId =  GetClassID("MANAGER_DESIGNATION", manager_desig.SelectedItem.ToString());



                if (UserId == 0 || MgrId == 0)

                {

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('User Role or Manager Designation not selected');", true);

                }

                else

                {

                    string strDate = DateTime.Now.ToString("dd-MMM-yyyy hh:mm:ss tt");

                    if (strDate.Substring((strDate.Length - 2), 2) == "AM")

                        strDate = strDate.Replace("AM", "A.M.");

                    else if (strDate.Substring((strDate.Length - 2), 2) == "PM")

                        strDate = strDate.Replace("PM", "P.M.");



                    // to check ehethere user already exists



                    int ChangeName = 0;



                    if (OldUserName == user.Text.ToString().Trim().ToUpper())

                    {

                        Query = "select count(user_name) from user_master where user_name='" + OldUserName + "'";

                        ChangeName = 0;

                    }

                    else

                    {

                        Query = "select count(user_name) from user_master where user_name='" + OldUserName + "'";

                        ChangeName = 1;

                    }



                    try

                    {

                        conn.Open();

                        SqlCommand SqlCmd = new SqlCommand(Query, conn);

                        SqlDataReader SqlRead = SqlCmd.ExecuteReader();

                        while (SqlRead.Read())

                        {

                            RecFound = SqlRead.GetInt32(0);

                        }

                        SqlRead.Close();

                        SqlCmd.Dispose();

                    }

                    catch (Exception ex)

                    {

                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Error');", true);

                    }

                    finally

                    {

                        if (conn.State == ConnectionState.Open)

                        {

                            conn.Close();

                        }

                    }



                    if (ChangeName == 0)

                    {

                        if (RecFound == 1)

                        {

                            try

                            {

                                conn.Open();



                                Query = "update user_master set" +

                                    "USER_PASSWORD='" + password.Text.ToString().Trim() + "'," +

                                    "USER_FULLNAME='" + full_name.Text.ToString().Trim().ToUpper() + "'," +

                                    "USER_DESIGNATION='" + desig.Text.ToString().Trim().ToUpper() + "'," +

                                    "USER_ROLE=" + UserId + "," +

                                    "USER_MGRDESIG=" + MgrId + "," +

                                    "USER_MGRNAME='" + manager.Text.ToString().Trim().ToUpper() + "'," +

                                    "USER_PHONE='" + phone.Text.ToString().Trim() + "'," +

                                    "USER_MOBILE='" + mobile.Text.ToString().Trim() + "'," +

                                    "USER_ORGANISATION='" + org.Text.ToString().Trim().ToUpper() + "'," +

                                    "USER_EMAIL='" + email_id.Text.ToString().Trim()+ "'," +

                                    "Updated_Date='" + DateTime.Now + "'where user_name='" + user.Text.ToString().Trim().ToUpper() + "'";



                                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                                SqlCmd.ExecuteNonQuery();

                                SqlCmd.Dispose();

                                ClearData();

                                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record Updated Succesfully ');", true);

                                DataGrid.DataBind();

                            }

                            catch (Exception ex)

                            {



                            }

                            finally

                            {

                                if (conn.State == ConnectionState.Open)

                                {

                                    conn.Close();

                                }

                            }

                        }



                        else

                        {

                            ClearData();

                            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record not found for updation');", true);

                        }

                    }



                    // change name



                    if (ChangeName == 1)

                    {

                        if (RecFound == 1)

                        {

                            try

                            {

                                conn.Open();



                                Query = "update user_master set " +

                                    "user_name = '" + user.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_password='" + password.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_fullname='" + full_name.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_designation='" + desig.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_role=" + UserId + "," +

                                    "user_mgrdesig=" + MgrId + "," +

                                    "user_mgrname='" + manager.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_phone='" + phone.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_mobile='" + mobile.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_organisation='" + org.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_substationarea='" + area.Text.ToString().Trim().ToUpper() + "'," +

                                    "user_email='" + email_id.Text.ToString().Trim() + "'," +

                                    "updated_date='" + DateTime.Now + "'where user_name='" + OldUserName + "'";



                                SqlCommand SqlCmd = new SqlCommand(Query, conn);

                                SqlCmd.ExecuteNonQuery();

                                SqlCmd.Dispose();

                                ClearData();

                                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Record Updated Succesfully');", true);

                                DataGrid.DataBind();

                                RoleAndDesig();

                            }

                            catch (Exception ex)

                            {

                            }

                            finally

                            {

                                if (conn.State == ConnectionState.Open)

                                {

                                    conn.Close();

                                }

                            }

                        }



                        else

                        {

                            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('User Name already exists');", true);

                        }

                    }



                    DisplayDataInGrid();    

                }

                

            }

        }



        protected void Button3_Click(object sender, EventArgs e)

        {

            ClearData();

        }



        protected void DataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)

        {

            if (e.Item.ItemType == ListItemType.Header)

            {

                e.Item.Cells[1].Text = "User ID";

                e.Item.Cells[2].Text = "User Name";

                e.Item.Cells[3].Text = "Designation";

                e.Item.Cells[4].Text = "Role";

                e.Item.Cells[5].Text = "Manager's Name";

                e.Item.Cells[6].Text = "Manager's Designation";

                e.Item.Cells[7].Text = "Phone";

                e.Item.Cells[8].Text = "Mobile";

                e.Item.Cells[9].Text = "Organization";

                e.Item.Cells[10].Text = "Substation Area";

                e.Item.Cells[11].Text = "Email ID";

                e.Item.Cells[12].Text = "Updated Date";

            }

        }



        protected void DataGrid_ItemCreated(object sender, DataGridItemEventArgs e)

        {

            if (e.Item.ItemType == ListItemType.Header)

            {

                e.Item.Cells[1].Text = "User ID";

                e.Item.Cells[2].Text = "User Name";

                e.Item.Cells[3].Text = "Designation";

                e.Item.Cells[4].Text = "Role";

                e.Item.Cells[5].Text = "Manager's Name";

                e.Item.Cells[6].Text = "Manager's Designation";

                e.Item.Cells[7].Text = "Phone";

                e.Item.Cells[8].Text = "Mobile";

                e.Item.Cells[9].Text = "Organization";

                e.Item.Cells[10].Text = "Substation Area";

                e.Item.Cells[11].Text = "Email ID";

                e.Item.Cells[12].Text = "Updated Date";

            }

        }



        protected void DataGrid_SortCommand(object source, DataGridSortCommandEventArgs e)

        {

            SortQueryForDataGrid = QueryForDataGrid + "order by" + e.SortExpression;

            DisplayDataInGrid();

        }





    }

}






Hi,


Suggest that you should store the sortexpression into viewstate. For detailed information, you can refer here


http://www.codeproject.com/Articles/67520/GridView-Paging-and-Sorting


http://stackoverflow.com/questions/702600/sorting-and-paging-with-gridview-asp-net


Hope it can help you


沒有留言:

張貼留言