Reputation: 4721
I have a datatable in which I have 4 rows coming but
I want to show only 2 data at time. and after of 3 seconds, will show another two
Here is my code:-
protected void GetDatafortable1()
{
lblpltfrm_Number.Text = "PlatForm 1";
list.InnerHtml = "";
dv_FromStop.InnerHtml = "";
Dv_ToStop.InnerHtml = "";
dv_Time.InnerHtml = "";
dv_status.InnerHtml = "";
// int svalue = Convert.ToInt32(Session["ReloadValue"]);
DataTable obj_Dt = new DataTable();
OracleConnection obj_Connection = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
string Query = "Select x.SR_NO,x.FROM_STOP,x.TO_STOP,x.ORIGIN_STOP_TIME from XXACL_PN_BUS_TIMETABLE x WHERE SCREEN_NUMBER=1";
using (OracleCommand obj_Command = new OracleCommand(Query))
{
OracleDataAdapter obj_Adapter = new OracleDataAdapter(obj_Command);
obj_Command.Connection = obj_Connection;
obj_Adapter.SelectCommand = obj_Command;
obj_Adapter.Fill(obj_Dt);
int Count = obj_Dt.Rows.Count;
for (int i = 0; i < obj_Dt.Rows.Count; i++)
{
list.InnerHtml = list.InnerHtml + "<br />" +
obj_Dt.Rows[i]["SR_NO"];
dv_FromStop.InnerHtml = dv_FromStop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["FROM_STOP"];
Dv_ToStop.InnerHtml = Dv_ToStop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["TO_STOP"];
dv_Time.InnerHtml = dv_Time.InnerHtml + "<br />" +
obj_Dt.Rows[i]["ORIGIN_STOP_TIME"];
}
//Data1Arrived = true;
}
}
NOTE Timing is being handled by Timer
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="3000" Enabled="true" />
HTML
<table style="width: 100%; height: 550px; text-align: center; border-collapse: collapse;"
runat="server" id="tbl1Details">
<colgroup>
<col width="5%" />
<col width="45%" />
</colgroup>
<tr>
<td colspan="4" style="height: 10px; border: 1px solid black;">
<asp:Label ID="lblpltfrm_Number" Style="height: 10px; font-size: 20px; font-weight: bold;"
runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="height: 10px; font-size: 20px; font-weight: bold; border: 1px solid black;">
SR.no
</td>
<td style="height: 10px; font-size: 20px; font-weight: bold; border: 1px solid black;">
Stop
</td>
<td style="height: 10px; font-size: 20px; font-weight: bold; border: 1px solid black;">
Time
</td>
<td style="height: 10px; font-size: 20px; font-weight: bold; border: 1px solid black;">
Status
</td>
</tr>
<tr>
<td id="tTime" runat="server" style="vertical-align: top; border: 1px solid black;">
<div id="list" runat="server" style="font-size: 25px;">
</div>
</td>
<td>
<table style="width: 100%; height: 551px; border-collapse: collapse;">
<colgroup>
<col width="50%" />
<col width="50%" />
</colgroup>
<tr style="vertical-align: top;">
<td style="vertical-align: top; border: 0 solid black; text-align: left;">
<div id="dv_FromStop" runat="server" style="font-size: 25px;">
</div>
</td>
<td style="vertical-align: top; border: 0 solid black; text-align: left;">
<div id="Dv_ToStop" runat="server" style="font-size: 25px;">
</div>
</td>
</tr>
</table>
</td>
<td style="vertical-align: top; border: 1px solid black;">
<div id="dv_Time" runat="server" style="font-size: 25px;">
</div>
</td>
<td style="vertical-align: top; border: 1px solid black;">
<div id="dv_status" runat="server" style="font-size: 25px; vertical-align: top;">
</div>
</td>
</tr>
</table>
MY EARLIER CODE WHICH WAS WORKING, BUT I DON'T WANT TO USE [SESSION] NOW
using (OracleCommand obj_Command = new OracleCommand(Query))
{
OracleDataAdapter obj_Adapter = new OracleDataAdapter(obj_Command);
obj_Command.Connection = obj_Connection;
obj_Adapter.SelectCommand = obj_Command;
obj_Adapter.Fill(obj_Dt);
int Count = obj_Dt.Rows.Count;
for (int i = 0; i < obj_Dt.Rows.Count; i++)
{
if (i < 2)
{
list.InnerHtml = list.InnerHtml + "<br />" +
obj_Dt.Rows[i]["SR_NO"];
dv_FromStop.InnerHtml = dv_FromStop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["FROM_STOP"];
Dv_ToStop.InnerHtml = Dv_ToStop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["TO_STOP"];
dv_Time.InnerHtml = dv_Time.InnerHtml + "<br />" +
obj_Dt.Rows[i]["ORIGIN_STOP_TIME"];
}
else
{
Session["NextPlatForm"] = 1;
Session["A"] = "PlatForm 1";
dv2SRNo.InnerHtml = dv2SRNo.InnerHtml + "<br />" +
obj_Dt.Rows[i]["SR_NO"];
dv2From_Stop.InnerHtml = dv2From_Stop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["FROM_STOP"];
dv2ToStop.InnerHtml = dv2ToStop.InnerHtml + "<br />" +
obj_Dt.Rows[i]["TO_STOP"];
dv2Time.InnerHtml = dv2Time.InnerHtml + "<br />" +
obj_Dt.Rows[i]["ORIGIN_STOP_TIME"];
}
}
}
II update
private void UpdateHtmlData()
{
DataTable dt = (DataTable)Session["TimeTable"];
int index = (int)Session["Index"];
for (int i = index; i <= index+1 && i < dt.Rows.Count; i++)
{
list.InnerHtml = list.InnerHtml + "<br />" +
dt.Rows[i]["SR_NO"];
dv_FromStop.InnerHtml = dv_FromStop.InnerHtml + "<br />" +
dt.Rows[i]["FROM_STOP"];
Dv_ToStop.InnerHtml = Dv_ToStop.InnerHtml + "<br />" +
dt.Rows[i]["TO_STOP"];
dv_Time.InnerHtml = dv_Time.InnerHtml + "<br />" +
dt.Rows[i]["ORIGIN_STOP_TIME"];
}
Session["Index"] = index + 2;
}
Also see the methods
protected void GetDatafortable1()
{
lblpltfrm_Number.Text = "PlatForm 1";
list.InnerHtml = "";
dv_FromStop.InnerHtml = "";
Dv_ToStop.InnerHtml = "";
dv_Time.InnerHtml = "";
dv_status.InnerHtml = "";
// int svalue = Convert.ToInt32(Session["ReloadValue"]);
DataTable obj_Dt = new DataTable();
OracleConnection obj_Connection = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
string Query = "Select x.SR_NO,x.FROM_STOP,x.TO_STOP,x.ORIGIN_STOP_TIME from XXACL_PN_BUS_TIMETABLE x WHERE SCREEN_NUMBER=1";
using (OracleCommand obj_Command = new OracleCommand(Query))
{
OracleDataAdapter obj_Adapter = new OracleDataAdapter(obj_Command);
obj_Command.Connection = obj_Connection;
obj_Adapter.SelectCommand = obj_Command;
obj_Adapter.Fill(obj_Dt);
Session["TimeTable"] = obj_Dt;
Session["Index"] = 0;
}
}
protected void Timer1_Tick(object sender, EventArgs e)
{
tbl1Details.Visible = false;
tbl2Details.Visible = false;
tbl3Details.Visible = false;
if (Data1Arrived)
{
tbl1Details.Visible = true;
Data1Arrived = false;
Data2Arrived = true;
Data3Arrived = false;
lblpltfrm_Number.Text = "PlatForm 1";
GetDatafortable1();
UpdateHtmlData();
}}
Page_load
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GetDatafortable1();
GetDatafortable2();
GetDatafortable3();
UpdateHtmlData();}
Upvotes: 0
Views: 90
Reputation: 2246
you can move the logic to call oracle in separate method and store the resultant datatable in ViewState or Session...Also store index which will indicate number of rows already read...then have a separate method which will update UI on Timer Tick
protected void GetDatafortable1()
{
lblpltfrm_Number.Text = "PlatForm 1";
list.InnerHtml = "";
dv_FromStop.InnerHtml = "";
Dv_ToStop.InnerHtml = "";
dv_Time.InnerHtml = "";
dv_status.InnerHtml = "";
// int svalue = Convert.ToInt32(Session["ReloadValue"]);
DataTable obj_Dt = new DataTable();
OracleConnection obj_Connection = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
string Query = "Select x.SR_NO,x.FROM_STOP,x.TO_STOP,x.ORIGIN_STOP_TIME from XXACL_PN_BUS_TIMETABLE x WHERE SCREEN_NUMBER=1";
using (OracleCommand obj_Command = new OracleCommand(Query))
{
OracleDataAdapter obj_Adapter = new OracleDataAdapter(obj_Command);
obj_Command.Connection = obj_Connection;
obj_Adapter.SelectCommand = obj_Command;
obj_Adapter.Fill(obj_Dt);
ViewState["TimeTable"] = obj_Dt;
ViewState["Index"] = 0;
//Data1Arrived = true;
}
}
private void UpdateHtml()
{
DataTable dt = (DataTable) ViewState["TimeTable"]
int index = (int) ViewState["Index"];
for (int i = index; i <= index+1 && i < dt.Rows.Count; i++)
{
list.InnerHtml = list.InnerHtml + "<br />" +
dt.Rows[i]["SR_NO"];
dv_FromStop.InnerHtml = dv_FromStop.InnerHtml + "<br />" +
dt.Rows[i]["FROM_STOP"];
Dv_ToStop.InnerHtml = Dv_ToStop.InnerHtml + "<br />" +
dt.Rows[i]["TO_STOP"];
dv_Time.InnerHtml = dv_Time.InnerHtml + "<br />" +
dt.Rows[i]["ORIGIN_STOP_TIME"];
}
ViewState["Index"] = index + 2;
}
proctected void page_load()
{
if(!IsPostBack())
{
GetDatafortable1();
UpdateHtml();
}
}
proctected void timer1_tick()
{
UpdateHtml();
}
Upvotes: 1
Reputation: 460108
You can use database paging with oracle's ROW_NUMBER
function:
string sql = @"
select col1, col2, ...
from (
select col1, col2, ...,
row_number()
over (order by OrderColumn asc) rn
from TableName
)
where rn between 3 and 4
";
Now you just have to parametrize the last min-row value, for example in session.
Upvotes: 0