Hello everyone i''m working a project for a bidding auction but i have some bug in my code
(i) i put the item in repeater but i can't get the timer to display each item their count down it is giving me once only
2) How to get the itemid of the item which time finished
Below are sample of code that i have work can anyone help please
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Bidding.aspx.vb" Inherits="Bidding" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"></head><body><form id="form1" runat="server"><div><asp:ScriptManager ID="SM1" runat="server"></asp:ScriptManager><asp:HiddenField ID="HiddenField1" runat="server" /><asp:repeater id="Repeater1" runat="server"><HeaderTemplate><ul></HeaderTemplate><ItemTemplate><li> <a href="ProductDetails.aspx?ItemID=<%# Eval("ItemID") %>"> <asp:Image id="Image1" runat="server" ImageUrl='<%#Eval("Image1") %>' /></a><div class="product-info"><h3> <%# Eval("Name")%></h3><div class="product-desc"><h4>Bid</h4><asp:TextBox ID="txtbid" runat="server"></asp:TextBox><asp:Button ID="btnSave" runat="server" Text="btnSave" /><strong class="price"><%# Eval("Price")%></strong><br/> <p><asp:UpdatePanel id="updPnl" runat="server" UpdateMode="Conditional"><ContentTemplate><asp:Label ID="lblTimer" runat="server"></asp:Label></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="timer1" EventName ="tick" /></Triggers></asp:UpdatePanel></div></p></div></div></li></ItemTemplate><FooterTemplate></ul></FooterTemplate></asp:repeater><asp:Timer ID="timer1" Interval="1000" OnTick="timer1_tick" runat ="server"></asp:Timer></div></form><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script><script type="text/javascript"> $(function () { $("[id*=btnSave]").bind("click", function () { var user = {}; user.BiddingPrice = $("[id*=txtbid]").val(); $.ajax({ type: "POST", url: "Bidding.aspx/SaveUser", data: '{user: ' + JSON.stringify(user) + '}', contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { alert("BID has been added successfully."); window.location.reload(); } }); return false; }); });</script></body></html>
Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Imports System.Net.Mail Imports System.Web.Configuration Imports System.Web.Script.Services Imports System.Web.Services Partial Class Bidding Inherits System.Web.UI.Page Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("VirgoPlaza").ToString()) Dim EndDate As DateTime Private ReadOnly _start As String Public Sub New() _start = WebConfigurationManager.ConnectionStrings("VirgoPlaza").ConnectionString End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then Using con1 As New SqlConnection(_start) Dim sql1 As String = "SELECT Item.ItemID, Item.Name,Item.Image1, Item.Description, Item.Price FROM Item INNER JOIN Auction ON Item.ItemID = Auction.ItemID Where Auction.Status='Valid' AND Auction.EndDate>=@endate " Dim myCommand1 As New SqlCommand(sql1, con1) myCommand1.Parameters.AddWithValue("@endate", DateTime.Now) myCommand1.CommandType = CommandType.Text con1.Open() Dim category As SqlDataReader category = myCommand1.ExecuteReader() 'binding data from category table to ddlcategory Repeater1.DataSource = category Repeater1.DataBind() End Using End If End Sub <WebMethod()> _<ScriptMethod()> _ Public Shared Sub SaveUser(ByVal user As BID) Dim constr As String = ConfigurationManager.ConnectionStrings("VirgoPlaza").ConnectionString Using con As New SqlConnection(constr) Using cmd2 As New SqlCommand("Select BiddingPrice From Bid") cmd2.CommandType = CommandType.Text con.Open() cmd2.Connection = con Dim result As Double = cmd2.ExecuteScalar Dim result2 As Integer = Convert.ToInt32(result) If result2 = 0 Then Using cmd As New SqlCommand("INSERT INTO BID VALUES(@Date, @BiddingPrice,@Status,@AuctionID,@BuyerID)") cmd.CommandType = CommandType.Text cmd.Parameters.AddWithValue("@Date", DateTime.Now) cmd.Parameters.AddWithValue("@BiddingPrice", user.BiddingPrice) cmd.Parameters.AddWithValue("@Status", "Available") cmd.Parameters.AddWithValue("@AuctionID", 11) cmd.Parameters.AddWithValue("@BuyerID", 1) cmd.Connection = con con.Open() cmd.ExecuteNonQuery() con.Close() End Using Else If result2 >= user.BiddingPrice Then MsgBox("Bid should be greather") Else Dim finalbid As Double = result2 Using cmd As New SqlCommand("UPDATE BID SET Date =@Date,BiddingPrice= @BiddingPrice,Status=@Status,AuctionID=@AuctionID,BuyerID =@BuyerID") cmd.CommandType = CommandType.Text cmd.Parameters.AddWithValue("@Date", DateTime.Now) cmd.Parameters.AddWithValue("@BiddingPrice", user.BiddingPrice) cmd.Parameters.AddWithValue("@Status", "Available") cmd.Parameters.AddWithValue("@AuctionID", 11) cmd.Parameters.AddWithValue("@BuyerID", 1) cmd.Connection = con cmd.ExecuteNonQuery() con.Close() End Using End If End If End Using End Using End Sub Public Class BID Public Property BiddingPrice As Integer Get Return _BiddingPrice End Get Set(ByVal value As Integer) _BiddingPrice = value End Set End Property Private _BiddingPrice As String End Class Protected Sub timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles timer1.Tick For Each item As RepeaterItem In Repeater1.Items Using con As New SqlConnection(_start) Using cmd2 As New SqlCommand("Select Auction.EndDate FROM Item INNER JOIN Auction ON Item.ItemID = Auction.ItemID Where Auction.Status='Valid' ") cmd2.CommandType = CommandType.Text con.Open() cmd2.Connection = con EndDate = Convert.ToDateTime(cmd2.ExecuteScalar) End Using End Using If Not SM1.IsInAsyncPostBack Then Dim timeout As String = Convert.ToString(EndDate) Session("timeout") = timeout End If Dim label2 = TryCast(item.FindControl("lblTimer"), Label) If 0 > DateTime.Compare(DateTime.Now, DateTime.Parse(Session("timeout").ToString())) Then label2.Text = String.Format("Time Left: 00:{0}:{1}", Convert.ToInt32(DateTime.Parse(Session("timeout").ToString()).Subtract(DateTime.Now).TotalMinutes).ToString(), Convert.ToInt32(DateTime.Parse(Session("timeout").ToString()).Subtract(DateTime.Now).Seconds).ToString()) End If Next End Sub End Class