C# GridView页面结果下拉列表,动态生成页面大小?
我想在gridview上创建一个动态的dropdownlist,根据行数和页面大小,每个页面上的项目都可以。我怎么能这么做?先说几句。我有一个老方法,但每次回发都会丢失第一项。 谢谢C# GridView页面结果下拉列表,动态生成页面大小?,c#,asp.net,gridview,paging,C#,Asp.net,Gridview,Paging,我想在gridview上创建一个动态的dropdownlist,根据行数和页面大小,每个页面上的项目都可以。我怎么能这么做?先说几句。我有一个老方法,但每次回发都会丢失第一项。 谢谢 if(e.Row.RowType==DataControlRowType.Pager) { int initialPageSize=页面大小; int pageSizeItems=5; int pageSizeDelta=初始页面大小; 字符串pagesizeleral=“Num.de resultados”; 如
if(e.Row.RowType==DataControlRowType.Pager)
{
int initialPageSize=页面大小;
int pageSizeItems=5;
int pageSizeDelta=初始页面大小;
字符串pagesizeleral=“Num.de resultados”;
如果(行计数>初始页面大小)
{
pageSizeItems=行数/pageSizeDelta+1;
而(页面大小项>10)
{
pageSizeDelta=pageSizeDelta*2;
pageSizeItems=行数/pageSizeDelta+1;
}
DropDownList ddl=新的DropDownList();
int i=0;
如果(pageSizeDelta!=初始页面大小)
{
Add(initialPageSize.ToString());
}
对于(i=1;i),您需要提供有关您尝试过的内容的更多信息,例如发布“每次回发时都会丢失第一项的旧方法”的代码.嗨,Karl,我已经写了一些代码,第一个是在rowcreated上执行的,第二个是dropdownlist的onchange,但是发生的事情是我重写了pagesize,这是viewstate属性,我怎么做才能不丢失第一个值?谢谢!
if (e.Row.RowType == DataControlRowType.Pager)
{
int initialPageSize = PageSize;
int pageSizeItems = 5;
int pageSizeDelta = initialPageSize;
string pageSizeLiteral = "Num. de resultados";
if (RowCount > initialPageSize)
{
pageSizeItems = RowCount / pageSizeDelta + 1;
while (pageSizeItems > 10)
{
pageSizeDelta = pageSizeDelta * 2;
pageSizeItems = RowCount / pageSizeDelta + 1;
}
DropDownList ddl = new DropDownList();
int i = 0;
if (pageSizeDelta != initialPageSize)
{
ddl.Items.Add(initialPageSize.ToString());
}
for (i = 1; i <= pageSizeItems; i++)
{
ddl.Items.Add((i * pageSizeDelta).ToString());
}
ddl.AutoPostBack = true;
ListItem li = ddl.Items.FindByText(this.MyGridView.PageSize.ToString());
if (li != null)
{
ddl.SelectedIndex = ddl.Items.IndexOf(li);
}
ddl.SelectedIndexChanged += new EventHandler(MyData_SelectedIndexChanged);
ddl.ID = "comboboxpager";
Table pagerTable = e.Row.Cells[0].Controls[0] as Table;
TableCell cell = new TableCell();
cell.Attributes.Add("class", "csspager");
cell.Controls.Add(new LiteralControl(pageSizeLiteral));
cell.Controls.Add(ddl);
pagerTable.Rows[0].Cells.Add(cell);
}
}
protected void MyData_SelectedIndexChanged(object sender, EventArgs e)
{
this.MyGridView.PageSize = int.Parse(((DropDownList)sender).SelectedValue);
if (this.FindControl("comboboxpager") != null)
{
DropDownList comboboxpager = (DropDownList)this.FindControl("comboboxpager");
comboboxpager.SelectedIndex = this.MyGridView.PageSize;
}
this.MyGridView.PageIndex = 0;
PageSize = this.MyGridView.PageSize;
DataBind(this.MyGridView);
}