Ajax的新手,这是一个问题。
Aspx页面有一个网格视图(允许排序)。网格下方是一个下拉列表,页面编号为。用户可以选择一个号码进入该页面。在初始页面加载时,网格显示记录,列 - 'OrderId'按'desc'顺序排序。 当前排序的顺序和此列的名称存储为ViewState变量。排序任何列时,这些变量都会更新。
获取数据的存储过程,接受columnName,SortOrder,PageNo。和页面大小作为参数。
此代码工作正常。现在,我想在Ajax调用中使用它。如果更改为“public static”,则无法访问ViewState变量。
那么,请指导我如何在Ajax中使用此功能。 如果只有ColumnName& sortOrder应该作为参数从Ajax函数发送,然后如何执行。
private void BindOrders(int index)
{
int pageSize = 10;
SqlCommand cmd = new SqlCommand("GetOrderDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@SortOrder", ViewState["vSortDirection"]
.ToString());
cmd.Parameters.AddWithValue("@ColName", ViewState["vSortExpression"]
.ToString());
cmd.Parameters.AddWithValue("@StartIndex", index);
cmd.Parameters.AddWithValue("@PageSize", pageSize);
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction =
ParameterDirection.Output;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
con.Open();
da.Fill(dt);
con.Close();
int rowcount = Convert.ToInt32(cmd.Parameters["@RecordCount"].Value);
if (rowcount > 0)
{
gvOrders.DataSource = dt;
gvOrders.DataBind();
int n = (int)Math.Ceiling((decimal)rowcount / (decimal)pageSize);
ddlPage.Items.Clear();
for (int i = 1; i <= n; i++)
{
ddlPage.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
ddlPage.SelectedIndex = index - 1;
}
}
答案 0 :(得分:0)
如果您已经在ASP.NET上,那么可以使用UpdatePanel
来执行Ajax。它会阻止整页重新加载。