楼主说清楚点!
--------------------------------
AspNetPager 免费分页控件4.2版发布,同时发布最新源代码,欢迎下载:http://www.webdiyer.com
--------------------------------
AspNetPager 免费分页控件4.2版发布,同时发布最新源代码,欢迎下载:http://www.webdiyer.com
调试欢乐多
.cs
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button1;
protected Robinson.Data.oleDb db = new oleDb(); private void Page_Load(object sender, System.EventArgs e)
{
//加载动态列
BoundColumn c = new BoundColumn();
c.DataField ="goods";
c.HeaderText ="编号";
this.DataGrid1.Columns.Add(c);
} public void OnPageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
this.BindDataGrid();
} //点际查询按扭
private void Button1_Click(object sender, System.EventArgs e)
{
this.BindDataGrid();
} //绑定
private void BindDataGrid()
{
this.DataGrid1.DataSource = db.GetDT("select * from syn_waredict").DefaultView;
this.DataGrid1.DataBind();
}
} .aspx
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 17px; POSITION: absolute; TOP: 46px" runat="server" AutoGenerateColumns="False" OnPageIndexChanged="OnPageIndexChanged" AllowPaging="True">
<PagerStyle Mode="NumericPages">
</PagerStyle></asp:DataGrid>
请教谁能解释一下其中的来由啊?
http://www.microsoft.com/taiwan/msdn/library/2002/Feb-2002/whitepaper/vbtchtopquestionsaboutaspnetdatagridservercontrol.htm
但随之有出现一个问题,Columns的信息无法读取,因为LoadViewState是发生在Load之前。请问我该怎么办?代码如下:
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
this.AddColumns();
}private void AddColumns()
{
for(int i=0;i<=_ArrFieldUpperBound;i++)
{
BoundColumn c = new BoundColumn();
c.DataField = ArrFieldInfo[i,0].ToString();
c.HeaderText =ArrFieldInfo[i,1].ToString();
c.Visible = (ArrFieldInfo[i,2].ToString() == "1");
this.DataGrid1.Columns.Add(c);
}
}
1. 要依靠ViewState来维持Datagrid中的内容,则必须在Init事件中建立所有的列,并加入到DataGrid.Colums中去,这样,一旦Datagrid绑定了数据,就能够维持Datagrid的状态,而且也能够保证DataGrid中的事件(比如DataGrid1_ItemDataBound,DataGrid1_PageIndexChanged)得到响应。
2. 若没有在Init事件中建立列,而是在Page_Load中建立列,则Datagrid 中的内容无法用ViewState来保持,必须每次都要在Page_Load重新绑定数据,这样才能保证DataGrid中的事件(比如DataGrid1_ItemDataBound,DataGrid1_PageIndexChanged)得到响应。
若是需要在某个按钮点击事件中改变DataGrid中的数据,在事件中重新获取数据,重新绑定