webForumDet fria alternativet

Problem med bläddring i DataList

.NET

0 svar · 159 visningar · startad av soham

Medlem sedan okt. 200316 inlägg
Frågan#1

Jag har en knasigt problem som jag nu stirrat mig blind på.
Jag har en datalist som jag visar bilder och som har två länkar för att bläddra fram och tillbaka.
Men av nån anledning när jag bläddrar fram ett steg så fylls min datalist om igen och en del bilder från föregående sida visas igen fast i oordning.

Jag har tre osynliga textboxar som håller reda på max antal sidor i min datalist, vilken sida jag är på samt totalt antal items som datalisten fylls med.
De heter intPageSize , intRecordCount och intCurrIndex

Detta är min kod.

i Page_Load:

		if(!Page.IsPostBack)
		{
			intPageSize.Text = "18";
			intCurrIndex.Text = "0";
			fillDataList();
		}

i fillDataList:

	private void fillDataList()
	{

		OdbcConnection con = new OdbcConnection(// Databas connection
		DataSet ds = new DataSet();
		OdbcDataAdapter adpt = new OdbcDataAdapter(" \*\* hämtar från databas" \*\* ", con);
		if(!Page.IsPostBack)
		{
			adpt.Fill(ds);
			intRecordCount.Text = ds.Tables\[0\].Rows.Count.ToString();
			ds = null;
			ds = new DataSet();				
		}

		adpt.Fill(ds, Convert.ToInt32(intCurrIndex.Text), Convert.ToInt32(intPageSize.Text),"Sales");
		
		imageList.DataSource = ds.Tables\[0\].DefaultView;
		imageList.DataBind();

		int pageCount;

		if (Convert.ToInt32(intRecordCount.Text) % Convert.ToInt32(intPageSize.Text) == 0)
			pageCount = Convert.ToInt32(intRecordCount.Text) / Convert.ToInt32(intPageSize.Text);
		else
			pageCount = Convert.ToInt32(intRecordCount.Text) / Convert.ToInt32(intPageSize.Text) + 1;

		
		if(Convert.ToInt32(intCurrIndex.Text) == (pageCount-1))
			showNextLink.Enabled = false;
		else
			showNextLink.Enabled = true;
		
		if(Convert.ToInt32(intCurrIndex.Text) == 0)
			showPreviousLink.Enabled = false;
		else
			showPreviousLink.Enabled = true;

		con.Close();
	}

och till sist mina fram, tillbaka länkar:

	private void showPreviousLink_Click(object sender, System.EventArgs e)
	{
		showNextLink.Enabled = true;

		if(Convert.ToInt32(intCurrIndex.Text) \> 0)
		{
			int t = Convert.ToInt32(intCurrIndex.Text) - 1;
			intCurrIndex.Text = t.ToString();
			fillDataList();
			if(Convert.ToInt32(intCurrIndex.Text) == 0)
				showPreviousLink.Enabled = true;
		}
		fillDataList();
	}

	private void showNextLink_Click(object sender, System.EventArgs e)
	{
		showPreviousLink.Enabled = true;

		if(Convert.ToInt32(intCurrIndex.Text) \< (Convert.ToInt32(intRecordCount.Text) -1 )) 
		{
			int t = Convert.ToInt32(intCurrIndex.Text) + 1;
			intCurrIndex.Text = t.ToString();
			fillDataList();
			if(Convert.ToInt32(intCurrIndex.Text) == (Convert.ToInt32(intRecordCount.Text) -1 )) 
				showNextLink.Enabled = false;
		}
		fillDataList();
	}

Jag antar att det är något knas med hur dataset fylls men jag kan inte lista ut vad det är.
Är det nån som har gjort liknade och har en lösning eller ser nån vad för fel jag gjort?

Tacksam för hjälp.

Soham

253 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)