1
我有網格視圖,我添加了屬性允許在其中排序,我將網格視圖中的所有字段轉換爲項目模板,之後出現此錯誤(GridView'GridView1'觸發了事件排序, t處理) 請任何人幫我 。在GridView中排序字段時出錯
'> '> '> '> '> '> '> '> 「> '> '> '> '> 「>
我有網格視圖,我添加了屬性允許在其中排序,我將網格視圖中的所有字段轉換爲項目模板,之後出現此錯誤(GridView'GridView1'觸發了事件排序, t處理) 請任何人幫我 。在GridView中排序字段時出錯
'> '> '> '> '> '> '> '> 「> '> '> '> '> 「>
如果沒有綁定你的GridView到SqlDataSource和你的AllowSorting設置爲true,你需要做的手工分揀。您需要將排序事件分配給GridView,並編寫自己的代碼來實現排序。你可以參考下面的代碼,並做相應的修改。
在aspx頁面:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
onsorting="GridView1_Sorting">
</asp:GridView>
在代碼隱藏:
public partial class GridViewSort : System.Web.UI.Page
{
private const string ASCENDING = " ASC";
private const string DESCENDING = " DESC";
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
GridView1.DataSource = GetStaff();
GridView1.DataBind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression, DESCENDING);
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, ASCENDING);
}
}
private void SortGridView(string sortExpression, string direction)
{
DataTable dt = GetStaff();
DataView dv = new DataView(dt);
dv.Sort = sortExpression + direction;
GridView1.DataSource = dv;
GridView1.DataBind();
}
/// <summary>
/// Dummy data
/// </summary>
/// <returns></returns>
private DataTable GetStaff()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
for (int i = 1; i <= 20; i++)
{
dt.Rows.Add(i, "Staff - " + i, 20);
}
return dt;
}
}