C# 用增量int相加

C# 用增量int相加,c#,unique,increment,C#,Unique,Increment,我的唯一文本框id有问题。 我的代码正在为数据库中的每艘船创建一个包含4个文本框的div。 每个创建的文本框必须具有唯一的ID。 我用increment int(inti=0和I++)实现了这一点,但似乎无法让它工作。这是我的密码 while (oReader.Read()); { int i = 0; System.Web.UI.HtmlControls.HtmlGenericControl createDiv = new System.Web.UI.HtmlContr

我的唯一文本框id有问题。 我的代码正在为数据库中的每艘船创建一个包含4个文本框的div。 每个创建的文本框必须具有唯一的ID。 我用increment int(inti=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++;
}
while(oReader.Read());
{
int i=0;
System.Web.UI.HtmlControl.HtmlGenericControl createDiv=
新系统.Web.UI.HtmlControls.HtmlGenericControl(“DIV”);
createDiv.ID=“createDiv”;
this.Controls.Add(createDiv);
列表tb_名称=新列表();
TextBox tb_name=new TextBox();
//TextBox tb_name=new TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_1”;
tb_name.Text=oReader[“SchipNaam”].ToString();
添加(新的LiteralControl
(“Scheepspnaam:”);
tb_名称。添加(tb_名称);
//textb_name1=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_1”;
tb_name.Text=oReader[“RederijNr”].ToString();
添加(新的LiteralControl
(“重新定义:”);
tb_名称。添加(tb_名称);
//textb_name2=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_1”;
tb_name.Text=oReader[“Lengte”].ToString();
添加(新的LiteralControl
(“伦特:”);
tb_名称。添加(tb_名称);
//textb_name3=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_1”;
tb_name.Text=oReader[“Laadvermogen”].ToString();
添加(新的LiteralControl
(“Laadvermogen:”);
tb_名称。添加(tb_名称);
i++;
}
我的输出始终是CreateT_0_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++;
}
inti=0;
while(oReader.Read())
{
System.Web.UI.HtmlControl.HtmlGenericControl createDiv=
新系统.Web.UI.HtmlControls.HtmlGenericControl(“DIV”);
createDiv.ID=“createDiv”;
this.Controls.Add(createDiv);
列表tb_名称=新列表();
TextBox tb_name=new TextBox();
//TextBox tb_name=new TextBox();
tb_name.ID=“CreateT_”+i.ToString();
tb_name.Text=oReader[“SchipNaam”].ToString();
添加(新的LiteralControl
(“Scheepspnaam:”);
tb_名称。添加(tb_名称);
//textb_name1=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_1”;
tb_name.Text=oReader[“RederijNr”].ToString();
添加(新的LiteralControl
(“重新定义:”);
tb_名称。添加(tb_名称);
//textb_name2=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_2”;
tb_name.Text=oReader[“Lengte”].ToString();
添加(新的LiteralControl
(“伦特:”);
tb_名称。添加(tb_名称);
//textb_name3=新的TextBox();
tb_name.ID=“CreateT_”+i.ToString()+“_3”;
tb_name.Text=oReader[“Laadvermogen”].ToString();
添加(新的LiteralControl
(“Laadvermogen:”);
tb_名称。添加(tb_名称);
i++;
}

行中已将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++;
            }
while(oReader.Read());
{
int i=0;
System.Web.UI.HtmlControl.HtmlGenericControl createDiv=
新系统.Web.UI.HtmlControls.HtmlGenericControl(“DIV”);
createDiv.ID=“createDiv”;
this.Controls.Add(createDiv);
列表tb_名称=新列表();
TextBox tb_name=new TextBox();
var lstext=新列表
{
“Scheepspnaam”,
“RederijNr”,
“朗特”,
“Laadvermogen”
};
对于(int j=0;j<4;j++)
{
tb_name.ID=“CreateT_”+i+“_”+(j+1);
//tb_name.Text=oReader[“SchipNaam”].ToString();
添加(新的LiteralControl
(“”+L文本[j]+
": "));
tb_名称。添加(tb_名称);
} 
i++;
}

另外,如果您在这里使用for循环,您可以减少代码行。

您正在为
的每次迭代重置
i
,而
循环时,您总是使用后缀
\u 1
?第一行末尾的额外分号可能也没有帮助…谢谢Ben,这对我帮助很大!它现在运转良好。