0

記事を表示するカスタムページを作成し、ソート順を選択できるドロップダウンを追加し、カスタムページングも実現しました。ここにコードがあります

var sortOrder = new List<string> {"Title", "Date", "Author"};

if (!IsPostBack)
{
    sortOrderDropDownList.DataSource = sortOrder;
    sortOrderDropDownList.DataBind();
}

articles = articles.OrderBy(a => a.Heading).ToList();

if (IsPostBack)
{
    switch (sortOrderDropDownList.SelectedItem.Value)
    {
       case "Date":
           articles = articles.OrderByDescending(a => a.StartDate).ToList();
           break;
       case "Author":
           articles = articles.OrderBy(a => a.AuthorComment).ToList();
           break;
       default:
          articles = articles.OrderBy(a => a.Heading).ToList();
          break;
     }
}

this.ArticleRepeater.DataSource = articles;

if (articles.Count > 10)
{
     int count = articles.Count - (number - 1) * 10 >= 10 ? 10 : articles.Count - (number - 1) * 10 - 1;
     this.ArticleRepeater.DataSource = articles.GetRange((number - 1) * 10, count);
     StringBuilder stringBuilder = new StringBuilder();
     if (number > 1)
     {
        stringBuilder.AppendFormat("<a href='{0}?page={1} '>&lt; Prev</a>  |  ", Request.Url.AbsolutePath, (number - 1));
        stringBuilder.AppendFormat("<b>Page {0}</b>", number);
        if (articles.Count > number * 10)
            stringBuilder.AppendFormat("  |  <a href='{0}?page={1}'>Next &gt;</a>", Request.Url.AbsolutePath, (number + 1));

        this.ArticlePaginator.Text = string.Format("<div class='ArticleListPagination'>{0}</div>", stringBuilder);
      }

      this.ArticleRepeater.DataBind();
}

autoPostBack ='true'ドロップダウンに追加し、から選択するdropdownと、記事がソートされますが、dropdown次のページに移動したときに選択した値が保存されません (ページが作成されるたびにドロップダウンを作成するため) にdropdown値を保存するにはどうすればよいですかビューステート? EnableViewState="True" ViewStateMode="Enabled"ドロップダウンも設定しました

4

1 に答える 1

1

ViewStateはページ本体に保存されるため、別のページに移動すると新しいViewStateものが作成されます。異なるページ間で値を保存するにはSessionCookiesまたはを使用しQueryStringます。

于 2013-10-18T09:24:46.380 に答える