webForumDet fria alternativet

Paging

6 svar · 347 visningar · startad av icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#1

Tjenare.
Jag vill skapa en egen paging. Jag har gjort en förut och då använde jag Hyperlinks så här:

[red]
if(PagedData.PageCount > 0)
{
	for(int i = 0; i < PagedData.PageCount; i++)
	{
		HyperLink link = new HyperLink();
		link.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath+"?p="+HttpContext.Current.Request.QueryString["p"].ToString()+"&page="+i.ToString();
		link.Text = Convert.ToString((i + 1));
		Literal lit = new Literal();
		lit.Text = " ";
		this.plcLinks.Controls.Add(lit);
		this.plcLinks.Controls.Add(link);
	}
}[/red]

Vid den sida som jag har nu så har jag dock lite olika värden i dropdownlister och dessa är argument till min datagrid. Så låt oss säga att jag väljer att visa alla städer i Dalarna i dropdownlisten sedan uppdaterar jag datagriden. Då kommer upp tre sidor i min paging. Klickar jag på sida 2 så kommer värdet i dropdownlisten att försvinna och standardvärdet i dropdownlisten göra så att datagriden inte har någon paging alls......

Hoppas ni förstår och att det finns något bra sätt att lösa detta på. Jag förstår att jag kan föra vidare mina värden från dropdownlisten i Querystringen men jag tänkte om det fanns något annat sätt att bibehålla sidans värde.

mv icaaq

PaceMedlem sedan juni 20019 024 inlägg
#2

Du tappar alltså värdet på din dropdownlist.

Har du EnableViewState="true"?

icaaqMedlem sedan okt. 20005 273 inlägg
#3

Ja.
Problemet blir väl att det inte blir en postback utan en helt ny sidaladdning, eller har jag fel?

mv icaaq

PaceMedlem sedan juni 20019 024 inlägg
#4

Visa lite kod. ;)

icaaqMedlem sedan okt. 20005 273 inlägg
#5

ok

[red]
private void Page_Load(object sender, System.EventArgs e)
{
	if(!Page.IsPostBack)
	{
		//Laddar länen
		this.LoadProvince();

		//Laddar Kategorierna
		this.LoadCategories();

		//Laddar Sökresultatet
		this.LoadSearch(this.SearchBox.Text, Convert.ToInt16(this.categories.SelectedItem.Value), Convert.ToInt16(HttpContext.Current.Request.QueryString["p"]), false, 0);
	}
}
public void LoadSearch(string SearchWord, int Category, int Province, bool Neighbour, int Size)
{
	Logic l = new Logic(ConnectionType.DataAccessLayer);
	this.PagedData.DataSource = l.GetSearch(SearchWord, Category, Province, Neighbour, Size);
	this.PagedData.AllowPaging = true;
	this.PagedData.PageSize = 1;
	try
	{
		PagedData.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"].ToString());
	}
	catch 
	{
		PagedData.CurrentPageIndex = 0;
	}
	if(PagedData.PageCount > 0)
	{
		for(int i = 0; i < PagedData.PageCount; i++)
		{
			HyperLink link = new HyperLink();
			link.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath+"?p="+HttpContext.Current.Request.QueryString["p"].ToString()+"&page="+i.ToString();
			link.Text = Convert.ToString((i + 1));
			Literal lit = new Literal();
			lit.Text = " ";
			this.plcLinks.Controls.Add(lit);
			this.plcLinks.Controls.Add(link);
		}
	}
	this.searchResult.DataSource = this.PagedData;
	this.searchResult.DataBind();
	this.count.Text = this.PagedData.DataSourceCount.ToString() +" st annonser";
}
public void searchButtonClick(object sender, System.EventArgs e)
{
	bool neighbour = false;
	int p = Convert.ToInt16(this.province.SelectedItem.Value);
	Logic l = new Logic(ConnectionType.DataAccessLayer);
	if(this.province.SelectedItem.Value == "0")
	{
		neighbour = true;
		p = Convert.ToInt16(HttpContext.Current.Request.QueryString["p"]);
	}
	this.LoadSearch(this.SearchBox.Text, Convert.ToInt16(this.categories.SelectedItem.Value), p , neighbour, 0);
}[/red]

mv icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#6
[red]public void LoadProvince()
{
//Kollar om querystringen p finns
if(HttpContext.Current.Request.QueryString["p"] != null)
{
	//Sätter p
	this.p = Convert.ToInt16(HttpContext.Current.Request.QueryString["p"]);

	//Skapar en instans av min Logic
	Logic l = new Logic(ConnectionType.ORMapper);
	
	//Hämtar det valda länet
	TblProvince t = l.GetSelectedProvince(p);
	
	//Skapar en ny ListItem för länet, samt sätter värdet och texten på den
	ListItem pItem = new ListItem();
	pItem.Text = t.FldProvinceName;
	pItem.Value = t.PkProvinceId.ToString();

	//Lägger till ovanstående ListItem
	this.province.Items.Add(pItem);

	//Skapar en ny ListItem för angränsande län, samt sätter värdet och texten på den
	ListItem nItem = new ListItem();
	nItem.Text = "Angränsande län";
	nItem.Value = "0";

	//Lägger till ovanstående ListItem
    this.province.Items.Add(nItem);
	
	//Skapar en ny ListItem för hela sverige, samt sätter värdet och texten på den
	ListItem sItem = new ListItem();
	sItem.Text = "Hela sverige";
	sItem.Value = "-1";

	//Lägger till ovanstående ListItem
    this.province.Items.Add(sItem);

	//Skapar en ny ListItem för - - - - , samt sätter värdet och texten på den
	ListItem Item = new ListItem();
	Item.Text = "- - - - - - - - - - -";

	//Lägger till ovanstående ListItem
	this.province.Items.Add(Item);

	//Loopar igenom alla län
	ICollection province = l.GetAllProvinces();
	foreach(TblProvince prov in province)
	{
		if(p != prov.PkProvinceId)
		{
			ListItem li = new ListItem();
			li.Text = prov.FldProvinceName;
			li.Value = prov.PkProvinceId.ToString();
			this.province.Items.Add(li);
		}
	}

}
else
{
	Response.Redirect("default.aspx");
}[/red]

på begäran ;)

PaceMedlem sedan juni 20019 024 inlägg
#7

Har haft samma problem (motsv i alla fall :e) och har inte heller hittat någon lösning.

Problemet jag kan säga på rak arm är att de tappar sina värden för att de läggs till dynamsikt.

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)