自定义datagrid分页事件遇到的问题
起因:由于我的datagrid的Head部分要实现双行标题,并且我的分页部分要放在datagrid的左上方.
问题:由于我在实现双行标题时利用了datagrid的上方的Pager区域,再加上客户要求分页必须要放在datagrid的左上方.
所以实现时我在datagrid的上方放了一个Table控件,通过在其中加入linkbutton控件来实现与datagrid的分页功能.
这时候问题就出现了:每一个linkbutton必须点击两次才能对datagrid排序.
请各位大侠帮帮忙!
以下是我的部分代码,以便大家参考.
问题点数:100、回复次数:10Top
1 楼dandelion(为我点灯!)回复于 2002-11-14 19:03:31 得分 0
protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
protected paging.DataSet1 dataSet11;
protected System.Web.UI.WebControls.Table Table1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
this.DataGrid1.CurrentPageIndex = 0;
this.oleDbDataAdapter1.Fill(dataSet11);
this.DataGrid1.DataBind();
}
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType elemType = e.Item.ItemType;
if(elemType == ListItemType.Pager)
{
CreateTable(this.DataGrid1.PageCount);
}
}
private void LinkCommand(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
Response.Write("You chose: " + e.CommandName + " Item " + e.CommandArgument);
this.DataGrid1.CurrentPageIndex = Int32.Parse(e.CommandArgument.ToString()) - 1;
this.DataGrid1.DataBind();
}
private void CreateTable(int pageCount)
{
//if(Table1.Rows.Count == 1)
//{
// if(Table1.Rows [0].Cells.Count==pageCount)
// {
// return;
// }
//}
Table1.Rows.Clear();
TableRow r = new TableRow();
if(pageCount==1)
{
Label l = new Label();
l.Text = "1";
TableCell c1 = new TableCell();
c1.Style.Add("font-size","10pt");
c1.Controls.Add(l);
r.Cells.Add(c1);
}
else
{
for(int i=0;i<pageCount;i++)
{
TableCell c2 = new TableCell();
c2.Style.Add("font-size","10pt");
int y = i+1;
if(i==this.DataGrid1.CurrentPageIndex)
{
Label l2 = new Label();
l2.Text = y.ToString();
c2.Controls.Add(l2);
r.Cells.Add(c2);
continue;
}
LinkButton h = new LinkButton();
h.Text = y.ToString();
h.CommandName = "Page";
h.CommandArgument = y.ToString();
h.Command += new System.Web.UI.WebControls.CommandEventHandler(this.LinkCommand);
c2.Controls.Add(h);
r.Cells.Add(c2);
}
}
Table1.Rows.Add(r);
Table1.DataBind();
}Top
2 楼icyer()回复于 2002-11-15 09:04:22 得分 10
似乎可以运行的呀,你看看我写的简单代码:
DataGrid1_ItemCreated:
LinkButton link = new LinkButton();
link.Text = "1";
link.CommandName = "1";
e.Item.Cells[0].Controls.Add(link);
link.Click += new System.EventHandler(this.PagerButton_Click);
PagerButton_Click:
LinkButton link = (LinkButton)sender;
Response.Write("You click " + link.CommandName);
似乎没有必要用Table1.DataBind()吧。
Top
3 楼xiajianfeng()回复于 2002-11-15 09:31:10 得分 0
up
Top
4 楼losenetway(firesword)回复于 2002-11-15 10:01:35 得分 0
从代码看应该是没有问题的Top
5 楼monkey_zeng(未来报告)回复于 2002-11-15 10:22:44 得分 0
要让分页显示在左上方?直接用属性设置就可以达到目的啦!
Top
6 楼dandelion(为我点灯!)回复于 2002-11-15 11:39:03 得分 0
to icyer()
我根据你的提示对程序进行了修改,但还是出现相同的问题啊.Top
7 楼superkiller(毛毛雨)回复于 2002-11-15 12:04:48 得分 10
由于我在实现双行标题时利用了datagrid的上方的Pager区域,再加上客户要求分页必须要放在datagrid的左上方.
所以实现时我在datagrid的上方放了一个Table控件,通过在其中加入linkbutton控件来实现与datagrid的分页功能.
//可不可在header 部分做你的标题(反正你是加table实现),
pager 部分不动他?
Top
8 楼dandelion(为我点灯!)回复于 2002-11-15 12:40:06 得分 0
to superkiller(毛毛雨):
这样一来的话我怕会影响到排序
你以前这样做过吗?Top
9 楼losenetway(firesword)回复于 2002-11-15 12:59:50 得分 0
是的,有问题Top
10 楼losenetway(firesword)回复于 2002-11-16 18:40:55 得分 80
加一句话就可以了
LinkButton h = new LinkButton();
h.ID="losenetway"+y.ToString();//要保证那个是唯一的
h.Text = y.ToString();Top




