2013-09-24 6 views
0

У меня есть простой пользовательский элемент управления, который будет отображаться несколько раз на странице. Итак, у меня есть панель, в которой есть петля над набором данных, создание UC, заполнение текстового поля и флажок, а затем добавление его на панель.динамические элементы управления не заполняются

панель добавляет UC, но ни значение текстового поля, ни флажок меняется ...

foreach (Issue iss in Case.Issues) 
{ 
    Comments comment = (Comments)LoadControl("~/UserControls/Comments.ascx"); 
    comment .ID = "Comment" + iss.IssueDetail.quality_control_issue_id.ToString(); 
    comment .Populate(iss); 
    QCComments_list.Controls.Add(comment); 
} 

Должен ли я сделать это заранее вынести или Onit страницы или там способ освежения контроль UC?

Вот разметка UC. очень просто.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ROI_Comments.ascx.cs" Inherits="QualityControl_UserControls.ROI_Comments" %> 
<!-- Field --> 
    <div id="ROI_Comment_DIV" class="field"> 
     <label>Corrections</label> 
     <input type="text" runat="server" id="comtxt" name="comtxt" /> 
     <asp:CheckBox ID="issue_critical" runat="server" Text="Critical" /> 
     <asp:Button runat="server" id="SaveButton" Text="Add Comment" OnClientClick="SaveComment(this);return false;" /> 
     <asp:Button runat="server" id="ROICancelButton" Text="Cancel" OnClientClick="return false;" /> 
     <asp:HiddenField runat="server" ID="hIssueID" /> 
    </div> 
    <!-- /Field --> 

и .cs

public partial class ROI_Comments : System.Web.UI.UserControl 
     { 
      public ROI_Comments() 
      { 

      } 

      public void Populate(cQuality_Control_Issue _comment) 
      { 
       try 
       { 
        hIssueID.Value = _comment.IssueDetail.quality_control_issue_id.ToString(); 
        comtxt.Value = _comment.IssueDetail.quality_control_issue_description; 
        comtxt.Disabled = true; 
        issue_critical.Checked = _comment.IssueDetail.quality_control_issue_critical; 
        issue_critical.Enabled = false; 
        ROICancelButton.Text = "Delete"; 

       } 
       catch(Exception ex) 
       {} 
      } 
     } 
+0

Не могли бы вы показать нам код и надпись UserControl? – Kenneth

+0

сделано. его единственный маленький UC – user2807494

ответ

0

Там нет ничего, очевидно, не так от того, что вы показали, но не может быть пустой ссылкой исключение происходит до того, как значения установлены. Вы не знали бы об этом из-за пустого блока try/catch. Его никогда не было хорошей идеей использовать пустую попытку/улов, потому что вы не представляете, происходит ли исключение.

+0

Да, конечно, вы правы в попытке поймать - его в разработке на данный момент. Но переопределение OnInit сделало трюк. Итак, теперь я вызываю функцию, которая добавляет UC до того, как я вызову base.Oninit (e). – user2807494

Смежные вопросы