Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При переходе на др страницу сортировка обнуляется, Косяк в DataGride 
:(
    Опции темы
Сарт
Дата 9.5.2007, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Собственно сабж...
Код

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Data.SqlClient;
using System.Web.Configuration;




public partial class UserGridDrop : System.Web.UI.UserControl
{
    private string path = @"C:\xmlConfig.xml";//Путь для файла конфигурации по умолчанию
    XmlDocument doc = new XmlDocument();
    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter da;
    DataTable dt;
    private string s;
    public string TakeS
    {
        get
        {
            return s;
        }
        set
        {
            s = value;
        }
    }
   
    public string TakePath
    {
        get
        {
            return path;
        }

    }
   
    #region Реализация поиска в xml
    protected string SearchInXml(string tagname)
    {
        XmlNodeList nodelist = doc.GetElementsByTagName(tagname);
       
        foreach (XmlNode node in nodelist)
        {
          
           TakeS = node.ChildNodes[0].Value;
        }
        return TakeS;
    }
    #endregion
    #region Реализация работы с локальной БД
    public void WorkWithLocal()
    {

        FillDrop();
        FillGrid();
             
    }
    #endregion
    #region Реализация работы с БД через Web service
    public void WorkWithService()
    {
        FillGrid();
    }
    #endregion
    #region Конфигурирование GridView на основе configXml
    protected void ConfigGrid()
    {
        gridEmpSalary.AllowPaging = true;//Разрешаем разбиение на страницы
        gridEmpSalary.AllowSorting = true;//Разрешаем сортировку
        #region Считывание и обработка значения Salary_Editable
        SearchInXml("Salary_Editable");
        if (TakeS == "true")
        {

        }
        else
        {
            if (TakeS == "false")
            {

            }
            else
                Response.Write("Error in Salary_Column settings!!");
        }
        #endregion

        #region Считывание и обработка значения Rows_Per_Page
        SearchInXml("Rows_Per_Page");
        if (Convert.ToInt32(TakeS) <= 0)
        {
            Response.Write("Error number of rows per page");
        }
        else
        {

            gridEmpSalary.PageSize = Convert.ToInt32(TakeS);//устанавливаем количество строк на страницу
        }
        #endregion
    }
    #endregion
    #region Заполнение DropDown из базы данных
    protected void FillDrop()
    {
        da = new SqlDataAdapter(cmd);
        DataSet  dk = new DataSet();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = "SERVER='ADMIN\\sq';DATABASE='ScanTest';UID='sa';PWD='1'";
        cmd.Connection = cn;
        cmd.CommandText = "SELECT Job_nm FROM Jobs";
        try
        {
            cn.Open();
            da.Fill(dk);
            cn.Close();
            foreach (DataRow r in dk.Tables[0].Rows)
            {
                DropJobs.Items.Add(r["Job_nm"].ToString());
            }
        }
        catch (Exception e)
        {
            Response.Write(e.Message);
        }
    }
    #endregion
    #region Заполнение GridView из базы данных
     public DataTable FillGrid()
    {
        string connectionString = "SERVER='ADMIN\\sq';DATABASE='ScanTest';UID='sa';PWD='1'";
        string sql = "SELECT First_name+' '+Last_name As FullName, Salary From Employees";
        SqlConnection con = new SqlConnection(connectionString);
        cmd = new SqlCommand(sql, con);
        da = new SqlDataAdapter(cmd);
        dt = new DataTable();
        try
        {
            con.Open();
            da.Fill(dt);
            gridEmpSalary.DataSource = dt;
            gridEmpSalary.AllowPaging = true;
            gridEmpSalary.AllowSorting = true;
            SearchInXml("Rows_Per_Page");
            if (Convert.ToInt32(TakeS) <= 0)
            {
                Response.Write("Error! Count of rows per page should be above zero");
            }
            else
            {
                gridEmpSalary.PageSize = Convert.ToInt32(TakeS);
            }
            gridEmpSalary.DataBind();
            
        }
        finally
        {
            con.Close();
        }
        return dt;
    }
    #endregion
    protected void XmlLoadFile()
    {
        /*загружаем созданный\перезаписанный файл с настройками. 
        Считываем значения, конфигурируем user web control
        в соответствии с ним*/
       
        try
        {
            doc.Load(TakePath);
           
        }
        catch(Exception e)
        {
            Response.Write(e.Message.ToString());
        }
        #region Считывание и обработка значения DataSource
        SearchInXml("DataSource");
        if (TakeS == "local")
        {
            
            WorkWithLocal();
        }
        else
        {
            if (TakeS == "web")
            {
                SearchInXml("Web_Service_Url");
                
                //Работа с Web_Service
            }
            else
                Response.Write("Error");
        }
        #endregion
     

    }
    protected void Page_Load(object sender, EventArgs e)
    {

    
        XmlLoadFile();


    }
    

    #region Событие при смене страниц
    protected void gridEmpSalary_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gridEmpSalary.PageIndex = e.NewPageIndex;
        gridEmpSalary.DataBind();
    }
    #endregion
     
    //Сортировка
    protected void gridEmpSalary_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataView view = dt.DefaultView;
        view.Sort = e.SortExpression;
        gridEmpSalary.DataSource = view;
        gridEmpSalary.DataBind();
        
    }
    
}


--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
pawlenty
Дата 13.7.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



Вообще, если по умному делать, нужно сортировку делать в базе, через хранимые процедуры, или формировать динамический запрос таким образом чтобы он выбирал только нужную часть отсортированного списка.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ASP | Следующая тема »


 




[ Время генерации скрипта: 0.0765 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.