各位大哥大姐 帮忙看看那里有错啊
我怎么一点 ButtonSort_Click datagrid怎么就不显示拉
我是做一个自动生成datagrid, ButtonSort_Click从新排序datagrid里的数据
页面代码
<form id= "Form1 " method= "post " runat= "server ">
<asp:button id= "ButtonCSV " style= "Z-INDEX: 101; LEFT: 288px; POSITION: absolute; TOP: 272px "
runat= "server " Text= "CSV "> </asp:button> <asp:datagrid id= "DataGrid1 " style= "Z-INDEX: 105; LEFT: 184px; POSITION: absolute; TOP: 72px "
runat= "server " AutoGenerateColumns= "False " PageSize= "2 ">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<FONT face= "MS UI Gothic "> NO </FONT>
</HeaderTemplate>
<ItemTemplate>
<asp:Button id= "Button1 " runat= "server " Text= " <%#((DataGridItem)Container).ItemIndex+1%> " CommandName= "Select ">
</asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid> <asp:button id= "ButtonReturn " style= "Z-INDEX: 102; LEFT: 352px; POSITION: absolute; TOP: 272px "
runat= "server " Text= "Return "> </asp:button> <asp:dropdownlist id= "DropDownList1 " style= "Z-INDEX: 103; LEFT: 128px; POSITION: absolute; TOP: 272px "
runat= "server "> </asp:dropdownlist> <asp:button id= "ButtonSort " style= "Z-INDEX: 104; LEFT: 224px; POSITION: absolute; TOP: 272px "
runat= "server " Text= "Sort "> </asp:button> </form>
页面后台代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using WebDSP.common;
namespace WebDSP
{
/// <summary>
/// Summary description for frmShowTable.
/// </summary>
public class frmShowTable : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.Button ButtonCSV;
protected System.Web.UI.WebControls.Button ButtonReturn;
protected System.Web.UI.WebControls.Button ButtonSort;
protected String sql;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected DataSet Dt = new DataSet();
protected ArrayList arrayList = new ArrayList();
private void Page_Load(object sender, System.EventArgs e)
{
MakeGrid();
if(!Page.IsPostBack)
{
BindGridData();
DropDownListDataBind();
}
}
protected void BindGridData()
{
//MakeGrid();
sql = Request.QueryString[ "strsql "];
DataTable dt = DBFactory.ExecuteQuery(sql);
DataGrid1.DataSource=dt;
DataGrid1.DataBind();
}
protected DataGrid MakeGrid()
{
DataGrid1.AutoGenerateColumns=false;
DataGrid1.AllowPaging=true;
DataGrid1.PageSize=5;
DataGrid1.PagerStyle.Mode=PagerMode.NumericPages;
DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(DataGrid1_PageIndexChanged);
Dt = (DataSet)Session[ "XML "];
string headerText;
string dataField = " ";
int column = 1;
BoundColumn FirstName;
for(int i =0; i < Dt.Tables[ "select "].Rows.Count; i++)
{
if(Dt.Tables[ "select "].Rows[i][1].ToString()== "PRN ")
{
headerText = Dt.Tables[ "select "].Rows[i][2].ToString().Trim();
for(int j=0;j <Dt.Tables[ "orderby "].Rows.Count;j++)
{
if(Dt.Tables[ "orderby "].Rows[j][0].ToString() == headerText)
{
dataField = Dt.Tables[ "orderby "].Rows[j][1].ToString().Trim();
arrayList.Add(dataField);
string []u = dataField.Split(new char[]{ '. '});
dataField = u[u.Length-1];
break;
}
}
FirstName=new BoundColumn();
DataGrid1.Columns.AddAt(column++, FirstName);
FirstName.HeaderText = headerText;
FirstName.DataField = dataField;
}
}
return DataGrid1;
}
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.ButtonCSV.Click += new System.EventHandler(this.ButtonCSV_Click);
this.ButtonReturn.Click += new System.EventHandler(this.ButtonReturn_Click);
this.ButtonSort.Click += new System.EventHandler(this.ButtonSort_Click);
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
DataGrid1.DataBind();
}
private void ButtonSort_Click(object sender, System.EventArgs e)
{
//SortExpression = e.SortExpression.ToString();
sql = Request.QueryString[ "strsql "];
int subsql = sql.IndexOf( "ORDER ");
sql.Substring(0,subsql);
Session[ "SortField "]=DropDownList1.SelectedValue;
if(Session[ "Order "]==null)
{
Session[ "Order "] = "ASC ";
}
Session[ "Order "] = (Session[ "Order "].ToString()== "DESC ")? "ASC ": "DESC ";
if(Session[ "SortField "]!=null)
{
sql += " ORDER BY "+Session[ "SortField "].ToString() + " " + Session[ "Order "].ToString();
}
//MakeGrid();
DataTable dt = DBFactory.ExecuteQuery(sql);
DataGrid1.DataSource=dt;
DataGrid1.DataBind();
}
private void DropDownListDataBind()
{
Dt = (DataSet)Session[ "XML "];
DropDownList1.DataSource = Dt.Tables[ "orderby "].DefaultView;
DropDownList1.DataTextField = Dt.Tables[ "orderby "].Columns[0].ToString();
DropDownList1.DataValueField = Dt.Tables[ "orderby "].Columns[1].ToString();
DropDownList1.DataBind();
}
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
BindGridData();
string dataText,dataField,paraString;
paraString = " ";
for(int i=1;i <DataGrid1.Columns.Count;i++)
{
dataText = DataGrid1.SelectedItem.Cells[i].Text.ToString();
//dataField = ((BoundColumn)DataGrid1.Columns[i]).DataField;
dataText = " ' " +dataText+ " ' ";
dataField = arrayList[i-1].ToString();
paraString += dataField + "= "+ dataText + " and ";
}
paraString = paraString.Substring(0,paraString.Length-4).Trim();
paraString = " " +paraString;
Response.Redirect( "../WebDSP/frmTableMain.aspx?paraString= "+paraString);
}
}
}
[解决办法]
去掉Page_Load第一行 MakeGrid();
另一楼不要误导
动态创建的控件,页面刷新的时候保持不住--> 可以保存的,但是数据填充一定要在控件被加载后