1
Ajax新手,这里有一个问题。通过Ajax调用访问ViewState变量静态方法
Aspx页面有一个网格视图(允许排序)。网格下方是一个页面号为下拉列表。用户可以选择一个号码进入该页面。在初始页面加载时,网格显示记录,列 - 'OrderId'按'desc'顺序排序。 当前排序的顺序和此列的名称存储为ViewState变量。当任何列被排序时,这些变量都会被更新。
获取数据的存储过程接受columnName,SortOrder,PageNo。和页面大小作为参数。
此代码工作正常。现在,我想通过Ajax调用来使用它。如果更改为“公共静态”,则无法访问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;
}
}
我知道更新面板。但我想尝试这种方式。另外,当使用updatepanel并进行Ajax调用时,它是相同的,我的意思是响应时间等? – Ruby
排序,引擎盖下Ajax仍然是Ajax。 ASP.NET只是增加了更多的解决方案。你可以破解你自己的,但我认为这将是非常痛苦的,除了学习'UpdatePanel'如何工作以外,你从经验中获益不多。 – beautifulcoder
感谢您的洞察力。你可以确认,我试图达到什么目的,有可能,而不使用UpdatePanel? – Ruby