Ambiguous Value Transfer Repeater By Session Method

99 Views Asked by At

I am trying to transfer value from one page to another page from repeater button control click. OnLoad It transfer correct TID to next page but on button click Of “India” It gives wrong TID to next page.

Database scenario is: Database Name “Test” Table Name:”ConDet”

Table Structure:

TID     Location    CountryName

1001    Mumbai      India

1002    Delhi       India

1003    New York    USA

1004    Tokyo       Japan

Main Page Design:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <table><tr><td>
        <asp:Button ID="Ind"  runat="server" Text="India" OnClick="Ind_Click"/>
    </td><td>
        <asp:Button ID="usa"  runat="server" Text="USA"/>

    </td><td>
        <asp:Button ID="jap"  runat="server" Text="Japan"/>

    </td></tr></table>

    <asp:Repeater ID="rep" runat="server" OnItemCommand="RepeaterClick" >
        <ItemTemplate >
            <table><tr><td>
                <asp:Label ID="ConCode" runat="server"  Text='<%#Eval("TID") %>'></asp:Label>
            </td><td>
                <asp:Label ID="loc" runat="server"  Text='<%#Eval("Location") %>'></asp:Label>

            </td><td>
                <asp:Label ID="Country" runat="server"  Text='<%#Eval("CountryName") %>'></asp:Label>
            </td></tr><tr><td>
               <asp:Button ID="inpt" runat="server"  Text="Contect"  CommandName="contact" UseSubmitBehavior="false"/>
            </td></tr></table>
        </ItemTemplate>
    </asp:Repeater>    
</form>

Code Behind:

    protected void Page_Load(object sender, EventArgs e)
    {
        DBind();
    }

    public void DBind() 
    {
        string sqlconstr = ConfigurationManager.AppSettings["Mystring"];
        SqlConnection con = new SqlConnection(sqlconstr);
        con.Open();

        string sql = "select * from ConDet order by TID desc";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataAdapter dap = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        dap.Fill(ds);
        rep.DataSource = ds;
        rep.DataBind();


    }

    protected void RepeaterClick(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "contact")
        {

            Label srk = (Label)e.Item.FindControl("ConCode");
            Session["PID"] = srk.Text;
            Server.Transfer("Test.aspx");

        }
    }

    protected void Ind_Click(object sender, EventArgs e)
    {
        string sqlconstr = ConfigurationManager.AppSettings["Mystring"];
        SqlConnection con = new SqlConnection(sqlconstr);
        con.Open();

        string sql = "select * from ConDet where CountryName='India' order by TID desc";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataAdapter dap = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        dap.Fill(ds);
        rep.DataSource = ds;
        rep.DataBind();

    }

Next Page Name:Test Page

 <form id="form1" runat="server">
    <asp:Label ID="CCode" runat="server"></asp:Label>
</form>

Code Behind:

 protected void Page_Load(object sender, EventArgs e)
    {
        CCode.Text = Session["PID"].ToString();
    }

I am trying to transfer TID to another page “Test” on load event working well. It’s allow me to transfer Correct TID To next page “Test” but when I try to load fresh data on click button (text= “India”) sortwise it gives wrong TID to next page name “Test” Where I am wrong?. How to Solve it to get correct TID transfer to next page on any order?.

0

There are 0 best solutions below