Member 8317792 Ответов: 2

Как отсортировать данные в gridview, щелкнув заголовок столбца


У меня есть gridview в ASP.NET 3.5 и автоматически сгенерированный файл включен, и я хочу отсортировать данные, нажав на заголовок сетки. как я могу это сделать? Я искал в интернете, но большинство из них работают со столбцами из html, но у меня их нет, так как они генерируются автоматически. Спасибо

2 Ответов

Рейтинг:
12

Jeevitha royapathi

Для сортировки вы должны привязать сетку...

private void LoadGrid(string sortExpr, string sortDirection)
{


        DataSet ds = new DataSet();
        SqlDataAdapter SqlDA = new SqlDataAdapter("Select * from tablename order by "+sortExpr+"  "+sortDirection+"", connectionString);
        SqlDA.Fill(ds);
        if (ds != null)
        {
            gdManageForm.DataSource = ds;
    gdManageForm.EditIndex = -1;
    gdManageForm.DataBind();
        }

}

protected void gdManageForm_Sorting(object sender, GridViewSortEventArgs e)
{
    string sortExpression = e.SortExpression;
    ViewState["SortExpression"] = sortExpression;
    if (GridViewSortDirection == SortDirection.Ascending)
    {
        GridViewSortDirection = SortDirection.Descending;
        SortGridView(sortExpression, DESCENDING);
    }
    else
    {
        GridViewSortDirection = SortDirection.Ascending;
        SortGridView(sortExpression, ASCENDING);
    }
}

private void SortGridView(string sortExpression, string direction)
{
    //If it is default state
    LoadGrid(sortExpression, direction);
}

private SortDirection GridViewSortDirection
{
    get
    {
        if (ViewState["sortDirection"] == null)
            ViewState["sortDirection"] = SortDirection.Ascending;
        return (SortDirection)ViewState["sortDirection"];
    }
    set { ViewState["sortDirection"] = value; }
}
Если у вас есть какие-либо сомнения, дайте мне знать


Member 8317792

Как? - Когда?

sdasasd

как при нажатии на заголовок gridview например идентификатор пользователя данные таблицы будут отсортированы

Jeevitha royapathi

частный недействительными LoadGrid(строка sortExpr, строки направления сортировки)
{


DataSet ds = новый набор данных();
SqlDataAdapter области sqlda задано = новый SqlDataAdapter("Select * из того, имятаблицы по "+sortExpr+" "+направления сортировки+"", параметр connectionString);
SqlDA. Fill(ds);
if (ds != null)
{
gdManageForm.Источник данных = ДС;
gdManageForm.EditIndex = -1;
gdManageForm.DataBind();
}

}

охраняемых недействительными gdManageForm_Sorting(объект отправителя, GridViewSortEventArgs е)
{
пнлформ.Управления.Четкий();
divformName.Стиль.Добавить("дисплей", "никто");
лблдисперрор.Текст = "";
litFormName.Текст = "";
строка sortExpression = e. SortExpression;
ViewState ["SortExpression"] = sortExpression;
if (GridViewSortDirection == SortDirection.Восходящий)
{
GridViewSortDirection = Направления Сортировки.Нисходящий;
SortGridView(sortExpression, нисходящий);
}
еще
{
GridViewSortDirection = Направления Сортировки.Восходящий;
SortGridView(sortExpression, по возрастанию);
}
}

частный недействительными SortGridView(строка sortExpression, строки направления)
{
//Если это состояние по умолчанию
LoadGrid(sortExpression, direction);
}

частные направления сортировки GridViewSortDirection
{
получить
{
if (ViewState ["sortDirection"] = = null)
Состояние вида["направления сортировки"] = направления сортировки.Восходящий;
возвращение (направления сортировки)отображение["направления сортировки"];
}
set { ViewState ["sortDirection"] = значение; }
}

Здесь gdManageForm - это имя Герда

Member 11822399

это решение не работает при щелчке по заголовку!

Рейтинг:
0

cyber_addicted

static SortDirection GridViewSortDirection;
 protected void chequegrid_Sorting(object sender, GridViewSortEventArgs e)
   {
       string sortExpression = e.SortExpression;
       ViewState["SortExpression"] = sortExpression;
       if (GridViewSortDirection == SortDirection.Ascending)
       {
           GridViewSortDirection = SortDirection.Descending;
           SortGridView(sortExpression, "DESCENDING");
       }
       else
       {
           GridViewSortDirection = SortDirection.Ascending;
           SortGridView(sortExpression, "ASCENDING");
       }
   }

   public void SortGridView(string sortExpression, string direction)
   {
       if (sortExpression == "ss")
       {
           string s;
           if(direction =="DESCENDING")
           {
               s = "order by dbo.registration.id desc";
           }
           else
           {
               s = "order by dbo.registration.id";
           }

           bindbysort(s);
       }
   }

   public void bindbysort(string expre)
   {
       DataSet ds = new DataSet();
       ds = ck.bindgrid(expre);
       if (ds.Tables[0].Rows.Count > 0)
       {
           chequegrid.DataSource = ds;
           Label1.Text = ds.Tables[0].Rows.Count.ToString() + " Result Found";
           chequegrid.DataBind();
       }
       else
       {
           chequegrid.DataSource = null;
           chequegrid.DataBind();

       }
   }


aspx


<asp:gridview id="chequegrid" runat="server" autogeneratecolumns="False" allowsorting="true" xmlns:asp="#unknown">
    CellPadding="4" ForeColor="#333333" GridLines="None" EmptyDataText="There is no any cheque generated yet for this time duration."
     CssClass="table-bordered table g" Width="100%" onsorting="chequegrid_Sorting">
    <alternatingrowstyle backcolor="White" forecolor="#284775" />
    <columns>
       <asp:templatefield headertext="Customer Id" sortexpression="ss">
            
            <itemtemplate>
                <asp:label id="Label1" runat="server">
                    Text='<%#  Eval("customer_reg_id") %>'></asp:label>
            </itemtemplate>
        </asp:templatefield>
         <asp:templatefield headertext="Customer Name">
            
            <itemtemplate>
                <asp:label id="Label1" runat="server">
                    Text='<%#  Eval("name") %>'></asp:label>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Date From">
            
            <itemtemplate>
                <asp:label id="Label1" runat="server" text="<%#  Convert.ToDateTime(Eval("date_from")).ToString("dd MMMM, yyyy") %>"></asp:label>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Date To">
            
            <itemtemplate>
                <asp:label id="Label2" runat="server" text="<%# Convert.ToDateTime(Eval("date_to")).ToString("dd MMMM, yyyy") %>"> </asp:label>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Cheque Amount">
            
            <itemtemplate>
                <asp:label id="Label3" runat="server" text="<%# Eval("income") +"/-" %>"></asp:label>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Generated On">
            
            <itemtemplate>
                <asp:label id="Label4" runat="server" text="<%# Convert.ToDateTime(Eval("date_of_clear")).ToString("dd MMMM, yyyy") %>"></asp:label>
            </itemtemplate>
        </asp:templatefield>
       
       
      
       
    </columns>
 

</asp:gridview>


Nelek

Вы понимаете, что этому вопросу уже 18 месяцев?

[no name]

ООО :П

u.namasivayam

DataSet ds = новый набор данных();
ДС = СК.bindgrid(п);

Что значит СК????