Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从代码隐藏调用动态创建的控件_C#_Html_Asp.net_Innerhtml - Fatal编程技术网

C# 从代码隐藏调用动态创建的控件

C# 从代码隐藏调用动态创建的控件,c#,html,asp.net,innerhtml,C#,Html,Asp.net,Innerhtml,我正在使用HtmlGenericControl方法动态创建一个控件,然后尝试在代码中调用该控件。显然,由于该控件尚未实际创建,因此代码会抛出构建错误。有没有办法解决这个问题?这是我正在使用的代码: foreach(string t in equipmentTypes) { HtmlGenericControl li = new HtmlGenericControl("li");//Create html control <li> //Create the correc

我正在使用
HtmlGenericControl
方法动态创建一个控件,然后尝试在代码中调用该控件。显然,由于该控件尚未实际创建,因此代码会抛出构建错误。有没有办法解决这个问题?这是我正在使用的代码:

foreach(string t in equipmentTypes)
{
    HtmlGenericControl li = new HtmlGenericControl("li");//Create html control <li>
    //Create the correct <li> for the equipment type. Using the naming convention tableAbreviation_recordName eg: et_ATV.
    li.InnerHtml = "<div id='et_" + t +"' >" + t + "<label><input type='checkbox'></label></div><ul id='make' runat='server'>";
    equipmentType.Controls.Add(li);
}

makes = Statements.GetMake();

foreach(string t in makes)
{
    HtmlGenericControl li = new HtmlGenericControl("li");//Create html control <li>
    //Create the correct <li> for the equipment type. Using the naming convention tableAbreviation_recordName eg: et_ATV.
    li.InnerHtml = "<div id='mk_" + t + "' >" + t + "<label><input type='checkbox'></label></div>";
    make.Controls.Add(li);
}

经过一些研究,我找到了一个名为Repeater的ASP.NET控件。这在创建动态ul时非常有效

这是我用来从数据库动态加载值的代码

<asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate><ul></HeaderTemplate>
        <ItemTemplate><li><div id="et_"><%# Eval("EquipmentTypeName") %><label><input type="checkbox"></label></div><ul id="_make" runat="server">
            <asp:Repeater ID="Repeater2" runat="server" DataSourceID="SQL_Make">
                <ItemTemplate>
                    <li><div id="mk_"><%# Eval("MakeName") %><label><input type="checkbox"></label></div><ul id="_year" runat="server"></ul></li>
                </ItemTemplate>
            </asp:Repeater>
        </ul></li></ItemTemplate>
        <FooterTemplate></ul></FooterTemplate>
    </asp:Repeater>


    您可以将代码张贴在您试图查找此控件的位置吗?已更新。实际上,我继续尝试使用ASP:Repeater控件。但是我仍然没有让它工作。你在哪里创建ID为“ATV_make”的控件?对不起,我想我没有正确解释该部分。正在退役的数据库中的值将是ATV。但我已经想出了一个解决办法使用中继器。谢谢你的回复。
    <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate><ul></HeaderTemplate>
            <ItemTemplate><li><div id="et_"><%# Eval("EquipmentTypeName") %><label><input type="checkbox"></label></div><ul id="_make" runat="server">
                <asp:Repeater ID="Repeater2" runat="server" DataSourceID="SQL_Make">
                    <ItemTemplate>
                        <li><div id="mk_"><%# Eval("MakeName") %><label><input type="checkbox"></label></div><ul id="_year" runat="server"></ul></li>
                    </ItemTemplate>
                </asp:Repeater>
            </ul></li></ItemTemplate>
            <FooterTemplate></ul></FooterTemplate>
        </asp:Repeater>