【问题标题】:Adding with increment int使用增量 int 添加
【发布时间】:2016-09-22 08:00:23
【问题描述】:

我的唯一文本框 ID 有问题。 我的代码正在为我的数据库中的每艘船创建一个带有 4 个文本框的 div。 每个创建的文本框都必须有一个唯一的 ID。 我使用增量 int(int i = 0 和 i++)执行此操作,但似乎无法使其正常工作。这是我的代码!

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++;
}

我的输出始终是 CreateT_0_1。我究竟做错了什么?我之前以为它有效,但似乎找不到问题。

我希望你们看到我做错了什么。

提前致谢!

【问题讨论】:

  • 您为while 循环的每次迭代重置i,然后您总是后缀_1
  • 第一行末尾的额外分号可能也无济于事......

标签: c# unique increment


【解决方案1】:

您在每个 while 循环开始时创建值为 0 的 i。在循环前初始化整数,然后在循环内更新,否则每次迭代都会重置为0。

您在 while 循环中添加了 3 个文本框,但您只在 while 循环结束时增加 i。您需要更改后缀,因为它始终为 _1 或在每个文本框之间使用 i++ 以使标识符唯一。

正如 Jon Skeet 在上面的评论中提到的,应该不需要 while 启动行上的分号。

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++;
}

【讨论】:

  • 感谢 Ben,这对我帮助很大!现在工作正常。
【解决方案2】:

您在该行中给出了 1 作为固定字符串 tb_name.ID = "CreateT_" + i.ToString() + "_1";所以它不起作用 试试下面的代码

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();


                 var lstText=new List<string>
                    {
                    "Scheepspnaam",
                    "RederijNr",
                    "Lengte",
                    "Laadvermogen"
                };

                for (int j = 0; j < 4; j++)
                {
                    tb_name.ID = "CreateT_" + i + "_" + (j+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'> " + lstText[j] +
                         ": <input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                    tb_names.Add(tb_name);
                } 

                i++;
            }

如果你在这里使用 for 循环,你可以减少代码行数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多