This works -- create an ASPX page and CnP this into it; seems like you are likely doing someting incorrect with your data binding.
<%@ Import Namespace="System.Data" %>
<%@ Page language="c#" AutoEventWireup="false" Trace="true" %>
<html>
<script language="C#" runat="server">
protected override void OnLoad(EventArgs e)
{
if (!IsPostBack)
{
ViewState["Customer"] = "";
ViewState["AccountNumber"] = "";
SortExpression = "Customer";
}
}
protected override void OnInit(EventArgs e)
{
EventLoader();
LoadDataGrid();
base.OnInit(e);
}
private void EventLoader()
{
this.Button1.Click += new EventHandler(Button1_Click);
}
public void Button1_Click(object sender, EventArgs e)
{
dg.AllowPaging = true;
dg.PageSize = 10;
dg.CurrentPageIndex = 0;
dg.PagerStyle.NextPageText = "<font face='webdings' size='2pt'>4</font>";
dg.PagerStyle.PrevPageText = "<font face='webdings' size='2pt'>3</font>";
dg.PagerStyle.Mode = PagerMode.NextPrev;
dg.PagerStyle.Position = PagerPosition.TopAndBottom;
dg.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
dg.DataSource = BindData(1, "asc");
dg.DataBind();
}
private DataView BindData(int foo, string bar)
{
DataSet dataSet = new DataSet();
DataTable table = new DataTable();
table.Columns.Add("AccountNumber");
table.Columns.Add("Customer");
for (int i = 100; i < 200; i++)
{
DataRow row = table.NewRow();
row["AccountNumber"] = i.ToString();
row["Customer"] = "Customer Name (" + i.ToString() + ")";
table.Rows.Add(row);
}
dataSet.Tables.Add(table);
DataView view = new DataView(dataSet.Tables[0]);
view.Sort = this.SortExpression;
return view;
}
private void LoadDataGrid()
{
dg.PageIndexChanged += new DataGridPageChangedEventHandler(dg_PageIndexChanged);
dg.SortCommand +=new DataGridSortCommandEventHandler(dg_SortCommand);
dg.ItemDataBound += new DataGridItemEventHandler(dg_ItemDataBound);
dg.ItemCreated += new DataGridItemEventHandler(dg_ItemCreated);
dg.ItemCommand += new DataGridCommandEventHandler(dg_ItemCommand);
dg.AllowSorting = true;
ViewState["Account Number"] = "desc";
ViewState["Customer"] = "desc";
}
private void dg_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
DataView view = BindData(1, "asc");
view.Sort = this.SortExpression;
dg.CurrentPageIndex = e.NewPageIndex;
dg.DataSource = view;
dg.DataBind();
}
private string SortExpression
{
get { return ViewState["SortExp"].ToString(); }
set { ViewState["SortExp"] = value; }
}
private void dg_SortCommand(object sender, DataGridSortCommandEventArgs e)
{
DataView view = BindData(1, "asc");
if (ViewState[e.SortExpression].ToString().Equals("desc"))
{
ViewState[e.SortExpression] = "asc";
}
else
{
ViewState[e.SortExpression] = "desc";
}
this.SortExpression = view.Sort = e.SortExpression + " " + ViewState[e.SortExpression];
dg.DataSource = view;
dg.DataBind();
}
private void dg_ItemDataBound(object sender, DataGridItemEventArgs e)
{
}
private void dg_ItemCreated(object sender, DataGridItemEventArgs e)
{
}
private void dg_ItemCommand(object sender, DataGridCommandEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
DataView view = BindData(1, "asc");
view.Sort = this.SortExpression;
int idx = (e.Item.ItemIndex + (dg.CurrentPageIndex * dg.PageSize));
this.Trace.Warn("SELECTED = " + view[idx]["Customer"]);
}
}
</script>
<body>
<form id="Form1" method="post" runat="server">
<asp:textbox id="TextBox1" runat="server"></asp:textbox>
<asp:button id="Button1" runat="server" text="Button" onclick="Button1_Click"></asp:button>
<asp:datagrid id="dg" runat="server" autogeneratecolumns="False">
<columns>
<asp:buttoncolumn text="Select" datatextfield="AccountNumber" sortexpression="AccountNumber" headertext="AccountNumber"
commandname="Select"></asp:buttoncolumn>
<asp:boundcolumn datafield="Customer" sortexpression="Customer" headertext="Customer"></asp:boundcolumn>
</columns>
</asp:datagrid>
</form>
</body>
</html>
pietaster said:
private void LoadDataGrid()
{
dg.PageIndexChanged += new DataGridPageChangedEventHandler(dg_PageIndexChanged);
dg.SortCommand +=new DataGridSortCommandEventHandler(dg_SortCommand);
dg.ItemDataBound += new DataGridItemEventHandler(dg_ItemDataBound);
dg.ItemCreated += new DataGridItemEventHandler(dg_ItemCreated);
dg.ItemCommand += new DataGridCommandEventHandler(dg_ItemCommand);
dg.AllowSorting = true;
ViewState["Account Number"] = "desc";
ViewState["Customer"] = "desc";
}