나는 이전에 누군가의 코드를 받았고 자신이 좋아하는 것으로 수정했습니다. 그러나, 나는 그들의 코드를 잘못 해석하고 있을지도 모르지만, 버튼을 세 번 클릭하면 테이블이 완전히 엉망이됩니다. 나는 "사고를 추가하려면 여기를 클릭하십시오"를 클릭 할 때마다 테이블로 동적 텍스트 상자를 만들고 세션에 저장합니다.동적 세션 변수 저장소 (세 번째 시도에서 테이블이 작동하지 않음)
2를 클릭 :
3 클릭 :
나는 그것을 디버깅을 시도하고 그것은 그냥 이렇게 왜 이해가되지 않습니다. 내 코드가 정확하다고 나는 믿는다. 나는 무엇이 잘못 될지 모른다.
public partial class employment_driversapplication_History : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected int TotalNumberAdded
{
get { return (int)(ViewState["TotalNumberAdded"] ?? 0); }
set { ViewState["TotalNumberAdded"] = value; }
}
protected void AccidentButton_Click(object sender, EventArgs e)
{
TotalNumberAdded++;
// AddControls(TotalNumberAdded);
BuildControls();
}
protected void PrevPage_Click(object sender, EventArgs e)
{
Response.Redirect("employment_driversapplication_personalinfo.aspx");
}
private IList<TextBox> AddedControls = new List<TextBox>();
private IList<Label> AddedControlsLabel = new List<Label>();
protected override void CreateChildControls()
{
BuildControls();
base.CreateChildControls();
}
private void BuildControls()
{
AccidentPlaceHolder.Controls.Add(new LiteralControl("<table><tr>"));
AccidentPlaceHolder.Controls.Add(new LiteralControl("<br />"));
for (var Nl = 0; Nl < TotalNumberAdded; Nl++)
{
var idNL = String.Format("NatureLabel{0}", Nl);
//Check if control was already added
//only create controls that are new for this postback
if (AccidentPlaceHolder.FindControl(idNL) == null)
{
var NLabel = new Label() { ID = idNL };
NLabel.Text = "Nature Of Accident: ";
AccidentPlaceHolder.Controls.Add(new LiteralControl("<td class='title-text'>"));
AccidentPlaceHolder.Controls.Add(NLabel);
AddedControlsLabel.Add(NLabel);
}
}
for (var x = 0; x < TotalNumberAdded; x++)
{
var idN = String.Format("NatureTextBox{0}", x);
//Check if control was already added
//only create controls that are new for this postback
if (AccidentPlaceHolder.FindControl(idN) == null)
{
var NtextBox = new TextBox() { ID = idN };
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'width='180px'>"));
AccidentPlaceHolder.Controls.Add(NtextBox);
AddedControls.Add(NtextBox);
}
}
for (var DL = 0; DL < TotalNumberAdded; DL++)
{
var idDL = String.Format("DateLabel{0}", DL);
//Check if control was already added
//only create controls that are new for this postback
if (AccidentPlaceHolder.FindControl(idDL) == null)
{
var DLabel = new Label() { ID = idDL };
DLabel.Text = "Date: ";
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'>"));
AccidentPlaceHolder.Controls.Add(DLabel);
AddedControlsLabel.Add(DLabel);
}
}
for (var d = 0; d < TotalNumberAdded; d++)
{
var idD = String.Format("DateTextBox{0}", d);
if (AccidentPlaceHolder.FindControl(idD) == null)
{
var DtextBox = new TextBox() { ID = idD };
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'width='180px'>"));
AccidentPlaceHolder.Controls.Add(DtextBox);
AddedControls.Add(DtextBox);
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td></tr>"));
}
}
for (var FL = 0; FL < TotalNumberAdded; FL++)
{
var idFL = String.Format("FatalLabel{0}", FL);
//Check if control was already added
//only create controls that are new for this postback
if (AccidentPlaceHolder.FindControl(idFL) == null)
{
var FLabel = new Label() { ID = idFL };
FLabel.Text = "Fatalities: ";
AccidentPlaceHolder.Controls.Add(new LiteralControl("<tr><td class='title-text'>"));
AccidentPlaceHolder.Controls.Add(FLabel);
AddedControlsLabel.Add(FLabel);
}
}
for (var f = 0; f < TotalNumberAdded; f++)
{
var idF = String.Format("FatalTextBox{0}", f);
if (AccidentPlaceHolder.FindControl(idF) == null)
{
var FtextBox = new TextBox() { ID = idF };
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'width='180px'>"));
AccidentPlaceHolder.Controls.Add(FtextBox);
AddedControls.Add(FtextBox);
}
}
for (var IL = 0; IL < TotalNumberAdded; IL++)
{
var idIL = String.Format("InjuryLabel{0}", IL);
//Check if control was already added
//only create controls that are new for this postback
if (AccidentPlaceHolder.FindControl(idIL) == null)
{
var ILabel = new Label() { ID = idIL };
ILabel.Text = "Injuries: ";
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'>"));
AccidentPlaceHolder.Controls.Add(ILabel);
AddedControlsLabel.Add(ILabel);
}
}
for (var i = 0; i < TotalNumberAdded; i++)
{
var idI = String.Format("InjuryTextBox{0}", i);
if (AccidentPlaceHolder.FindControl(idI) == null)
{
var ItextBox = new TextBox() { ID = idI };
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td><td class='title-text'width='180px'>"));
AccidentPlaceHolder.Controls.Add(ItextBox);
AddedControls.Add(ItextBox);
AccidentPlaceHolder.Controls.Add(new LiteralControl("</td></tr>"));
}
}
AccidentPlaceHolder.Controls.Add(new LiteralControl("</table>"));
}
protected override void OnPreRender(EventArgs e)
{
foreach (var ctrl in AddedControls)
{
var key = ctrl.ID.Replace("TextBox", String.Empty);
Session[key] = ctrl.Text;
}
foreach (string session in Session.Keys)
{
System.Diagnostics.Debug.WriteLine(String.Format("{0} = {1}", session, Session[session]));
}
base.OnPreRender(e);
}
}
도움
내가보고 몇 시간 동안 디버깅 봤는데 ... 감사하겠습니다 아무것도를 해결하지 않았다.
그래 내가 사이트에 새로 온 사람. .. 전체 동의에 대해 안다. 그리고 조금 전에 받아들이지 마라. .. 미안. ( – user1574685
만일 내가 참가하는 모두에게 많은 많은 점을 줄 수 있으면 :) – user1574685
나는 당신이 추천했던 것을했다. .. 그리고 처음 두 개의 "테이블"을 하나에 넣는 것 같습니다. 태그가 구현되고 있지 않지만 왜 – user1574685