I have a problem with my unique textbox id's. My code is creating a div with 4 textboxes for each ship in my database. Each created textbox must have an unique ID. I do this with increment int (int i = 0 and i++) but can't seem to get it working. Here is my code!
while (oReader.Read());
{
int i = 0;
System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
createDiv.ID = "createDiv";
this.Controls.Add(createDiv);
List<TextBox> tb_names = new List<TextBox>();
TextBox tb_name = new TextBox();
//TextBox tb_name = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_1";
tb_name.Text = oReader["SchipNaam"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name1 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_1";
tb_name.Text = oReader["RederijNr"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name2 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_1";
tb_name.Text = oReader["Lengte"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte :<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name3 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_1";
tb_name.Text = oReader["Laadvermogen"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
i++;
}
My output is always CreateT_0_1. What am I doing wrong? I thought it worked before but can't seem to find the issue.
I hope that you guys see what I'm doing wrong.
Thanks in advance!
You create i with value 0 at the beginning of each while loop. Initialise the integer before the loop and then update it within the loop, otherwise it will reset to 0 on each iteration.
You are adding 3 text boxes within the while loop, but you only increment i at the end of the while loop. You will need to change your suffix as this is always _1 or use i++ between each text box to make the identifier unique.
As Jon Skeet mentioned in a comment above, the semicolon on the line of the while initiation should not be needed.
int i = 0;
while (oReader.Read())
{
System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
createDiv.ID = "createDiv";
this.Controls.Add(createDiv);
List<TextBox> tb_names = new List<TextBox>();
TextBox tb_name = new TextBox();
//TextBox tb_name = new TextBox();
tb_name.ID = "CreateT_" + i.ToString();
tb_name.Text = oReader["SchipNaam"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name1 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_1";
tb_name.Text = oReader["RederijNr"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name2 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_2";
tb_name.Text = oReader["Lengte"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte :<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
//TextBox tb_name3 = new TextBox();
tb_name.ID = "CreateT_" + i.ToString() + "_3";
tb_name.Text = oReader["Laadvermogen"].ToString();
createDiv.Controls.Add(new LiteralControl
("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
tb_names.Add(tb_name);
i++;
}