c# - Update panel doesn't work in asp.net -
i trying show online train in page without refresh. think have utilize updatepanel
. panel should updated every second.
let explain code.
i set part of code in page:
<asp:scriptmanager id="scriptmanager1" runat="server"></asp:scriptmanager> <asp:updatepanel id="updatepanel1" runat="server" onload="updatepanel1_load"> <contenttemplate> </contenttemplate> </asp:updatepanel>
so set interval function refresh panel this,
<script type="text/javascript"> $(function () { setinterval("__dopostback('<%=updatepanel1.clientid%>', '');", 1000); });
in code behind set fetched data,
protected void updatepanel1_load(object sender, eventargs e) { foreach (var t in onlinetrainlist) { response.write("<div id='train-box' style='margin-left:" + (t.xtrainlocation - 8) + "px;margin-top:" + t.ytrainlocation + "px;background:" + t.train.traincolor + "'>" + "<span>" + t.trainid + "</span>" + "</div>"); list<sensor> passedsensor = new list<sensor>(); passedsensor = sensorrepository.findby(i => i.currenttrainid == t.trainid).tolist(); string color = trainrepository.findby(i => i.id == t.trainid).first().traincolor; foreach (sensor sensor in passedsensor) { response.write("<div class='currentcolor-sensor' style='margin-left:" + (sensor.xlocation - 1) + "px;margin-top:" + (sensor.ylocation + 8) + "px;background:" + color + "'></div>"); } } }
so problem panel doesn't refresh .and panel updatepanel1_load
phone call 1 time.
so code is:
foreach (var t in onlinetrainlist) { response.write("<div id='train-box' style='margin-left:" + (t.xtrainlocation - 8) + "px;margin-top:" + t.ytrainlocation + "px;background:" + t.train.traincolor + "'>" + "<span>" + t.trainid + "</span>" + "</div>"); list<sensor> passedsensor = new list<sensor>(); passedsensor = sensorrepository.findby(i => i.currenttrainid == t.trainid).tolist(); string color = trainrepository.findby(i => i.id == t.trainid).first().traincolor; foreach (sensor sensor in passedsensor) { response.write("<div class='currentcolor-sensor' style='margin-left:" + (sensor.xlocation - 1) + "px;margin-top:" + (sensor.ylocation + 8) + "px;background:" + color + "'></div>"); } }
first thing must bring attending id
assign divs, must unique , never same. utilize increment variable , append div's id eg: div0, div1... etc
now lets have @ first row within loop. has, <span>
nested within <div>
, containing attributes text.
the asp.net way of handling elements object oriented instead of html string:
protected void updatepanel1_load(object sender, eventargs e) { //clear update panel updatepanel1.contenttemplatecontainer.controls.clear(); //var generate unique div id's int dividincrement = 0; foreach (var t in onlinetrainlist) { //increment id generator dividincrement++; // create a div element htmlgenericcontrol _tempdiv = new htmlgenericcontrol("div"); //set attributes div _tempdiv.id = "train-box" + dividincrement.tostring(); _tempdiv.style["margin-left"] = (t.xtrainlocation - 8).tostring() + "px"; _tempdiv.style["margin-top"] = t.ytrainlocation.tostring() + "px"; _tempdiv.style["background"] = t.train.traincolor.tostring(); //create inner span htmlgenericcontrol _tempspan = new htmlgenericcontrol("span"); //set span's innertext _tempspan.innertext = t.trainid.tostring(); //add span div _tempdiv.controls.add(_tempspan); //add div updatepanel updatepanel1.contenttemplatecontainer.controls.add(_tempdiv); list<sensor> passedsensor = new list<sensor>(); passedsensor = sensorrepository.findby(i => i.currenttrainid == t.trainid).tolist(); string color = trainrepository.findby(i => i.id == t.trainid).first().traincolor; foreach (sensor sensor in passedsensor) { // create div sub stuff htmlgenericcontrol _tempsubdiv = new htmlgenericcontrol("div"); _tempsubdiv.attributes["class"] = "currentcolor-sensor"; _tempsubdiv.style["margin-left"] = (sensor.xlocation - 1).tostring() + "px"; _tempsubdiv.style["margin-top"] = (sensor.ylocation + 8).tostring() + "px"; _tempsubdiv.style["background"] = color.tostring(); //add sub stuff update panel updatepanel1.contenttemplatecontainer.controls.add(_tempsubdiv); } } }
c# asp.net updatepanel
No comments:
Post a Comment