2016-12-07 21 views
2

私のプロジェクトでは、Repeaterオブジェクトによってテキストボックスを作成する必要があります。次に、各テキストボックスにTextChangedイベントが適用され、他のスタッフが実行されます。Asp.Net Repeater TextBox "TextChanged"イベントの別のコントロールを見つける方法

リピーターアイテムの構造:

repeater item: 
textbox.id = url 
Label.id = webTitle 

の質問はどのように私はurl_TextChangedイベントを使用して、独自のlabel.textを変更することができますか?

全コード:

 //To create reperater item 
     repeater.DataSource = myObj; 
     repeater.DataBind(); 
     foreach (RepeaterItem rptItm in repeater.Items) 
     { 
      CalendarObj item = calObj[rptItm.ItemIndex]; 
      rptItm.Controls.Add(new LiteralControl("Enter your URL")); 
      TextBox url = new TextBox(); 
      url.ID = "url"; 
      url.AutoPostBack = true; 
      url.TextChanged += new EventHandler(urlTextBox_TextChanged); 
      url.Text = item.listURl; 
      rptItm.Controls.Add(url); 
      rptItm.Controls.Add(new LiteralControl("<br/>")); 

      rptItm.Controls.Add(new LiteralControl("web Title")); 
      Label title = new Label(); 
      title.ID = "title"; 
      title.Text = ""; 
      rptItm.Controls.Add(title); 
      rptItm.Controls.Add(new LiteralControl("<br/>")); 
      rptItm.Controls.Add(new LiteralControl("<br/>")); 

     } 
    // Event 

    protected void urlTextBox_TextChanged(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     if (textBox != null) 
     { 
      string theText = textBox.Text; 
      //How? textbox.parent.title.text = theText? 
     } 

    } 

答えて

1

あなたは以下のようにそのIDでラベルを見つけるために、テキストボックスのNamingContainer、その後FindControlメソッドを使用することができ、

protected void urlTextBox_TextChanged(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     if (textBox != null) 
     { 
      string theText = textBox.Text; 
      var item = (RepeaterItem) textBox.NamingContainer; 
      if(item != null) { 
       Label titleLabel = (Label)item.FindControl("title"); 
       if(titleLabel != null) { 
        titleLabel.Text = theText; 
       } 
      } 
     } 

    } 
関連する問題