GridView
手動ページングで実装しようとしています。query string param
ページング用に を追加したい。これは完全にためSEO
ですabsolutely required
。コードはすでに Web サイトで公開されており、約 500 のエントリ (投稿gridview
) があります。
現在、会社はクエリ文字列パラメーターを実行して、検索エンジンがすべてのページを調べてキャプチャできるようにすることを望んでいます。現在、検索エンジンはグリッドビューでページ 1 のみを表示しています。それは私がSEOチームから知ったことです。
これを行う方法については本当にわかりません。助けてください。すでにライブになっているすべてのページが台無しになるため、すべてのコードを実際に変更することはできません。
GirdView コード
<asp:GridView runat="server" AllowPaging="true" ID="entriesGridView" AutoGenerateColumns="false"
DataKeyNames="EntryId" ShowHeader="False" OnRowDataBound="entriesGridView_RowDataBound"
CssClass="grid" OnPageIndexChanging="entriesGridView_PageIndexChanging" PageSize="20">
<PagerStyle CssClass="pager"></PagerStyle>
<Columns>
// some template / bound fields
</Columns>
<EmptyDataTemplate>
// empty results text....
</EmptyDataTemplate>
<EmptyDataRowStyle HorizontalAlign="Center" />
</asp:GridView>
コードビハインド
protected void entriesGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
LoadEntriesGridView(false, false, false, sqlCriteria);
entriesGridView.PageIndex = e.NewPageIndex;
entriesGridView.DataBind();
}
情報源
public static EntryCollection LoadForCriteriaWithJoin(string sqlCriteria, bool isEmailQuery, bool isFullNameQuery, string sortExpression)
{
//DEFAULT SORT EXPRESSION
if (string.IsNullOrEmpty(sortExpression)) sortExpression = "OrderBy";
//CREATE THE DYNAMIC SQL TO LOAD OBJECT
var selectQuery = new StringBuilder();
selectQuery.Append("SELECT");
selectQuery.Append(" CE.* ");
selectQuery.Append("FROM EntryTable CE ");
selectQuery.Append("JOIN ContestantsTable CC ");
selectQuery.Append("ON CE.ContestantId = CC.ContestantId ");
string whereClause = null;
if (isEmailQuery)
whereClause = "WHERE CE.IsApproved = 1 AND CC.Email = @EmailAddress";
else if (isFullNameQuery)
whereClause = "WHERE CE.IsApproved = 1 AND CC.FirstName + ' ' + CC.LastName LIKE '%' + @FullName + '%'" +
"OR CE.CName LIKE '%' + @FullName + '%'" +
"OR CE.CTitle LIKE '%' + @FullName + '%'" +
"OR CE.Answer1 + ' ' + CE.Answer2 + ' ' + Answer3 LIKE '%' + @FullName + '%'";
else
whereClause = "WHERE CE.IsApproved = 2"; // returning Empty result...
if (!String.IsNullOrEmpty(sqlCriteria))
selectQuery.Append(whereClause);
selectQuery.Append(" ORDER BY " + sortExpression);
var database = T.I.Database;
var selectCommand = database.GetSqlStringCommand(selectQuery.ToString());
if (isEmailQuery)
database.AddInParameter(selectCommand, "@Email", System.Data.DbType.String, sqlCriteria);
if (isFullNameQuery)
database.AddInParameter(selectCommand, "@FullName", System.Data.DbType.String, sqlCriteria);
//EXECUTE THE COMMAND
var results = new EntryCollection();
using (var dr = database.ExecuteReader(selectCommand))
{
while (dr.Read())
{
var entry = new Entry();
MWCompetitionsEntry.LoadDataReader(entry, dr);
results.Add(entry);
}
dr.Close();
}
return results;
}