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