簡體   English   中英

手動網格視圖排序

[英]Manual Grid View Sorting

我的網格視圖是手動綁定數據的(以便其他功能正常工作)。 閱讀其他線程,我必須管理自己的排序事件。

當單擊列對網頁上的列進行排序時,出現錯誤:

“你調用的對象是空的。”

結果是該表為空,但我看不到為什么它為空。

有任何想法嗎?

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable table = GetData();
    table.DefaultView.Sort = e.SortExpression + " " + SetSortDirection(e.SortDirection.ToString());
    GridView1.DataSource = table;
    GridView1.DataBind();
}

protected string SetSortDirection(string currentsortDirection)
{
    string sortDirection;
    if (currentsortDirection == "Ascending")
    {
        sortDirection = "Descending";
    }
    else
    {
        sortDirection = "Ascending";
    }
    return sortDirection;
}

編輯:

public DataTable GetData()
{
    SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=DatabaseName;Integrated Security=True");
    conn.Open();
    string query = "SELECT * FROM tablex WHERE Property='" + Request.QueryString["xxx"] + "'";
    SqlCommand cmd = new SqlCommand(query, conn);

    DataTable dt = new DataTable();
    dt.Load(cmd.ExecuteReader());
    return dt;
}

謝謝。

 DataTable table = BuildInfo_GridView.DataSource as DataTable;

像這樣,您將無法獲取數據源您已綁定的內容,例如,調用后端查詢以獲取數據表,或者當您綁定數據時,僅將數據存儲在視圖狀態中並獲取它

Save your sort order in view state
if (ViewState["sortOrder"] != null)
            {
                ViewState["sortExpression"] = e.SortExpression;
                if (ViewState["sortOrder"].ToString().ToUpper() == "ASCENDING")
                {
                    e.SortDirection = SortDirection.Descending;
                    ViewState["sortOrder"] = SortDirection.Descending.ToString();
                }
                else
                {
                    e.SortDirection = SortDirection.Ascending;
                    ViewState["sortOrder"] = SortDirection.Ascending.ToString();
                }
            }
            else
            {
                ViewState["sortExpression"] = e.SortExpression;
                ViewState["sortOrder"] = e.SortDirection.ToString();
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM