Программный доступ к HTML-элементу управления, созданному в ASP.NET - PullRequest
0 голосов
/ 20 января 2012

Привет.Я создал новый div внутри другого div в asp.net.Теперь я хочу использовать свойство innerhtml этого вновь созданного div.Я не могу найти способ ..

Это то, что я делаю на моей странице .aspx ..

      <asp:ScriptManager ID="ScriptManager1" runat="server">
      </asp:ScriptManager>
      <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div id="forNewEmployee" runat="server"></div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="link" EventName="click" />
        </Triggers>
      </asp:UpdatePanel>

     <div class="addMore">
      <asp:Button ID="link"  CssClass="label"  runat="server" Text="Add More - Image" 
          onclick="link_Click" />
     </div>   

и в файле codebehind ..

protected void link_Click(object sender, EventArgs e)
{
    if (clickCheck != 0)
    {
        // access the newly generated div 'forNewEmployee' + specific id and call its innerHtml Method?
        System.Web.UI.HtmlControls.HtmlControl div = (System.Web.UI.HtmlControls.HtmlControl)ScriptManager1.FindControl("forNewEmployee" + clickCheck);

    }
    else {
        this.forNewEmployee.InnerHtml = newRow();        
    }
}

У меня есть функция, в которой я строю строку, чтобы ввести новые элементы внутри div forNewEmployee.Вот как это определяется ..

protected string newRow() {
    // check for click
    clickCheck++;

    // check for new row
    countForEmployee++;

    // building our new row
    rowString.AppendLine("<label for='empName" + countForEmployee.ToString() + "'>Your Employee Name: <span>(required)</span></label>");
    rowString.AppendLine("<input id='empName" + countForEmployee.ToString() + "' class='registrationformEmployeeText' />");
    rowString.AppendLine("</div>");

    rowString.AppendLine("<div id='forNewEmployee" + countForEmployee.ToString() + "' name='forNewEmployee" + countForEmployee.ToString() + "' runat='server'></div>");

    return rowString.ToString();
}

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Проще всего было бы использовать панель asp .net, а также создавать и добавлять элементы управления asp .net (даже если они являются буквальными элементами управления).

Так что в основном ваша функция NewRow будет:

protected Panel newRow() { 
   // check for click 
   clickCheck++; 

   // check for new row 
   countForEmployee++; 

   // building our new row 
    Panel pnl = new Panel();
    pnl.Controls.Add(new Literal("<label for='empName" + countForEmployee.ToString() + "'>Your Employee    Name: <span>(required)</span></label>"));
    pnl.Controls.Add(new Literal("<input id='empName" + countForEmployee.ToString() + "' class='registrationformEmployeeText' />"));

    Panel forNewEmployee = new Panel();
    forNewEmployee.ID = "forNewEmployee" + countForEmployee.ToString();

    pnl.Controls.Add(forNewEmployee);

    return pnl;

} 

Таким образом, вы сможете выполнить FindControl с идентификатором Control ID, который вы указали.

0 голосов
/ 20 января 2012

Я не совсем уверен, что вы можете сделать это с div, но уверен, что вы можете сделать это с asp:Panel:

this.forNewEmployee.Controls.Add(new Literal(newRow());
...