【问题标题】:Creating DIV in C# and adding controls to it在 C# 中创建 DIV 并向其添加控件
【发布时间】:2014-01-22 03:49:49
【问题描述】:

我有以下在 c# 中的 asp 页面上添加布局

chart_holder.Controls.Add(new LiteralControl("<div id='chart_location"+ i.ToString()+"'>" +
                        "<asp:Panel ID='chartbtns"+i.ToString() +
                   "'runat='server' Visible='true' >" +
                         "<div class='chart_button_container'>" +
                            "<div class='chart_buttons'> " +
                               "<ul class='menu2' >" +
                                   "<li> <a href='#' class='chart_buttons_image_save' title='Save'></a>" +
                                        "<ul><li> <asp:LinkButton ID='btnSaveXLSX" + i.ToString() + "' runat='server' oncommand='btnSaveXLSX_Click' CommandArgument='"+ i.ToString() +"' >Excel</asp:LinkButton></li> " +
                                        "<li> <asp:LinkButton ID='SavePDF" + i.ToString() + "' runat='server' oncommand='btnSavePDF_Click' CommandArgument='" + i.ToString() + "'>PDF</asp:LinkButton></li>" +
                                            "<li><asp:LinkButton ID='btnSaveimg" + i.ToString() + "' runat='server' oncommand='btnSaveimg_Click' CommandArgument='" + i.ToString() + "'>Image</asp:LinkButton> </li>" +
                                       " </ul>" +
                                    "</li>" +
                                "</ul>" +
                            "</div>" +
                            "<div class='chart_buttons'>" +
                                "<asp:LinkButton ID='enlarge_chart_" + i.ToString() + "'CssClass='chart_buttons_image_enlarge' style='background-image:url(/Images/1386870554_arrow-maximise.png)' Runat='server' oncommand='enlarge_chart_Click' CommandArgument='" + i.ToString() + "'></asp:LinkButton>" +
                            "</div>" +
                            "<div class='chart_buttons'>" +
                                "<asp:LinkButton ID='refresh_chart_" + i.ToString() + "' CssClass='chart_buttons_image_refresh' style='background-image:url(/Images/refresh.png)' Runat='server' CommandArgument='1'></asp:LinkButton>" +
                            "</div>" +
                       " </div>" +
                       "<div id ='chart" + i.ToString() + "_holder" +"' enableviewstate='true' runat='server' style='height:95%; width:100%'> </div>" +

                       "</asp:Panel>" +
                    "</div>"));

然后我想最终在上面的一个 div 中添加一个图表。无论如何我可以访问 div 然后向它​​添加控件...?

以前我有以下

chart1_holder.Controls.Add(chart_location_1);

但是chart1_holder来自asp页面,不是动态的。

【问题讨论】:

  • 你不能通过 LiteralControl 添加像 LinkBut​​ton 这样的 runat=server 控件。文字控制仅适用于文本\通常的 html。您需要动态创建它们
  • 你需要动态添加一个div,然后你可以在这个div中添加图表。使用 div 的新对象并添加图表控件此对象。

标签: c# asp.net dynamic controls


【解决方案1】:

如果你想生成几个这样的控件,你可以使用Repeater

 <asp:Repeater runat="server" ID="rptItems">
  <ItemTemplate>
        <div id="chart_location"> 
        <asp:Panel ID="Panel1" runat="server" Visible="true" >
         <div class="chart_button_container"> 
            <div class="chart_buttons"> 
               <ul class="menu2" >
                   <li> <a href="#" class="chart_buttons_image_save" title="Save"></a>
                        <ul><li> <asp:LinkButton ID="LinkButton1" runat="server" oncommand="btnSaveXLSX_Click"CommandArgument="<%#Container.ItemIndex %>" >Excel</asp:LinkButton></li> 
                        <li> <asp:LinkButton ID="LinkButton2" runat="server" oncommand="btnSavePDF_Click" CommandArgument="<%#Container.ItemIndex %>">PDF</asp:LinkButton></li>
                            <li><asp:LinkButton ID="LinkButton3" runat="server" oncommand="btnSaveimg_Click" CommandArgument="<%#Container.ItemIndex %>">Image</asp:LinkButton> </li>
                       </ul>
                    </li>
                </ul>
            </div>
            <div class="chart_buttons">
                <asp:LinkButton ID="LinkButton4" CssClass="chart_buttons_image_enlarge" style="background-image:url(/Images/1386870554_arrow-maximise.png)" Runat="server" oncommand="enlarge_chart_Click" CommandArgument="<%#Container.ItemIndex %>"></asp:LinkButton>
            </div>
            <div class="chart_buttons">
                <asp:LinkButton ID="LinkButton5" CssClass="chart_buttons_image_refresh" style="background-image:url(/Images/refresh.png)" Runat="server" CommandArgument="1"></asp:LinkButton>
            </div>
       </div>
       <div id ="Div1" enableviewstate="true" runat="server" style="height:95%; width:100%"> </div>

       </asp:Panel>
    </div>
  </ItemTemplate>
</asp:Repeater>

然后就可以绑定了

rptItems.DataSource = yourDataItems;
rptItems.DataBind();

【讨论】:

    【解决方案2】:

    使用this:

     System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
            new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");      
            createDiv.ID = "createDiv";
            createDiv.InnerHtml = " I'm a div, from code behind ";
            this.Controls.Add(createDiv);
    

    【讨论】:

    • 是的,这可以工作..但我怎么能拥有与我发布的代码相同的布局?例如。 div 中的 div..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多