Alternative to DataPager

Hi,

I am using a datapager on a page where different images are shown. Now i am using the following code:-


        <asp:DataPager ID="DataPager1" runat="server" 
        PagedControlID="lvPhotoViewer" PageSize="1" 
        onprerender="DataPager1_PreRender">
        <Fields>
            <asp:NextPreviousPagerField ButtonType="Link"
            PreviousPageText="<< Previous" NextPageText="Next >>"/>
         </Fields>
        </asp:DataPager>

Now this code does run through all the images, but i need to alter the querystring and make it change to match the ID of the photo displayed. I tried adding QueryStringField=“String” but this was hopeless.

I have a querystring like so:-

http://csesalford.com/hussainwd9/view-photo.aspx?PhotoID=28&AlbumID=18&UID=20

When i click on next image i need it to change to something like:-

http://csesalford.com/hussainwd9/view-photo.aspx?PhotoID=30&AlbumID=18&UID=20

See the PhotoID has changed. But it currently does not do this. When i arrive on the page the PhotoID stays the same. I have been trying for a while and im starting to give up!

So was wondering if there was an alternative.

Regards
Billy

Hey,

I actually tried doing this:-


            if (SourceTextBox != null)
            {
                DataPager1.QueryStringField = "view-photo.aspx?PhotoID=" + SourceTextBox.Text + "&AlbumID=" + Request.QueryString["AlbumID"].ToString() + "&UID=" + Request.QueryString["UID"].ToString() + "";
            }

But it didnt work. I have an invisible label which holds the value of the ID of the photo.

So i thought i would simply get the value of it. But it does not work.

Any ideas?

DataPager1.QueryStringField should be the name of the Query string you want to change. PhotoID

Note that this will issue a GET instead of a PostBack.

Hey,

well i thought the same thing but this code does nothing to the querystring, it does not change the PhotoID.

This is the code, there is quite a bit sorry!


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string photoID = Request.QueryString["PhotoID"];
            string albumID = Request.QueryString["AlbumID"];
            ViewState["hfAlbumID"] = albumID;
            //Get Page number by passing photo id
            int index = GetPageNumber(int.Parse(photoID), int.Parse(albumID));
            DataPager1.SetPageProperties(index, 1, true);

            Label SourceTextBox = (Label)Page.PreviousPage.FindControl("Label5");

            if (SourceTextBox != null)
            {
[B]                DataPager1.QueryStringField = "view-photo.aspx?PhotoID=" + SourceTextBox.Text + "&AlbumID=" + Request.QueryString["AlbumID"].ToString() + "&UID=" + Request.QueryString["UID"].ToString() + "";[/B]
            }
        }
    }
    /// <summary>
    /// Since the pagesize is 1 the row number can be taken as page number
    /// </summary>
    /// <param name="PhotoID"></param>
    /// <param name="AlbumID"></param>
    /// <returns></returns>
    public int GetPageNumber(int PhotoID, int AlbumID)
    {
        SqlConnection con = new SqlConnection("Data Source=SQLB23.webcontrolcenter.com;User ID=wbsd;Password=******");
        con.Open();
        SqlCommand com = new SqlCommand("SELECT PageNumber FROM (SELECT row_number() Over (order by photo_id asc) AS PageNumber,photo_id,album_id FROM hussaini_photo_album where album_id=" + AlbumID.ToString() + ") As photos where photo_id=" + PhotoID.ToString() + " and album_id=" + AlbumID.ToString(), con);
        SqlDataReader dr = com.ExecuteReader();
        int pageno = 1;
        if (dr.Read())
        {
            pageno = int.Parse(dr["PageNumber"].ToString());
        }
        dr.Close();
        con.Close();
        return (pageno - 1);
    }
    public DataTable GetPhoto(string query)
    {
        SqlConnection con = new SqlConnection("Data Source=SQLB23.webcontrolcenter.com;User ID=wbsd;Password=******");
        SqlDataAdapter ada = new SqlDataAdapter(query, con);
        DataTable dtEmp = new DataTable();
        ada.Fill(dtEmp);
        return dtEmp;
    }
    protected void DataPager1_PreRender(object sender, EventArgs e)
    {
        lvPhotoViewer.DataSource = GetPhoto("Select * from hussaini_photo_album where album_id = " + ViewState["hfAlbumID"].ToString());
        lvPhotoViewer.DataBind();
    }
    protected void lvPhotoViewer_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

See the code in bold. Any ideas why it does not work?