2011-07-20 8 views
0

Label、TextBox、およびRequiredFieldValidatorの組み合わせで、カスタマイズ可能なWebコントロールを作成しました。これを行うには、テーブルコントロールを継承するクラスFieldを作成します。Label、TextBox、RequiredFieldValidatorをカスタマイズするレンダリング時のWebコントロールの問題

namespace WebHRIS.Controls 
{ 
    public class Field : Table 
    { 
     private Label lblField; 
     private TextBox tbField; 
     private RequiredFieldValidator rfvField; 
     private string _text; 
     private string _invalidMessage; 
     private string _clientScript; 
     private string _controlID; 

     public virtual string LabelText 
     { 
      get { return _text; } 
      set { _text = value; } 
     } 

     public virtual string InvalidMessage 
     { 
      get { return _invalidMessage; } 
      set { _invalidMessage = value; } 
     } 

     public virtual string ClientScript 
     { 
      get { return _clientScript; } 
      set { _clientScript = value; } 
     } 

     public virtual string ControlID 
     { 
      get { return _controlID; } 
      set { _controlID = value; } 
     } 

     protected override void OnInit(EventArgs e) 
     { 
      base.OnInit(e); 
      TableRow tr = new TableRow(); 
      TableCell tc = new TableCell(); 
      lblField = new Label(); 
      lblField.Text = _text; 
      tc.Controls.Add(lblField); 
      tr.Cells.Add(tc); 
      tbField = new TextBox(); 
      tbField.ID = _controlID + this.ID; 
      tc = new TableCell(); 
      tc.Controls.Add(tbField); 
      tr.Cells.Add(tc); 
      rfvField = new RequiredFieldValidator(); 
      rfvField.ControlToValidate = tbField.ID; 
      rfvField.ErrorMessage = this.InvalidMessage; 
      rfvField.EnableClientScript = (this.ClientScript.ToLower() != "false"); 
      tc = new TableCell(); 
      tc.Controls.Add(rfvField); 
      tr.Cells.Add(tc); 
      this.Rows.Add(tr); 
     } 

     protected override void Render(HtmlTextWriter writer) 
     { 
      base.Render(writer); 
      lblField.RenderControl(writer); 
     } 
    } 
} 

これは、私はこれが唯一の部分コードであることを

<%@ Register TagPrefix="udc" Namespace="WebHRIS.Controls" Assembly="WebHRIS" %> 
<udc:Field ID="fSample" runat="server" LabelText="Sample : " InvalidMessage="ErrorMessage" 
             ClientScript="false" ControlID="tb" /> 

注このコントロールを使用する方法です。今、私はこのような問題を抱えています。 enter image description here

「サンプル:」テキストを削除します。一見TIA

答えて

0

は、私はあなたがRenderメソッドをあなたの中にテキストの2行を取得していると思う:

protected override void Render(HtmlTextWriter writer) 
{ 
    base.Render(writer); 
    lblField.RenderControl(writer); 
} 

lblFieldは、Labelコントロールである - 私はラベルが二度目に書かれてきていることを賭けるだろうlblField.RenderControl(writer)への呼び出しによって。その行を削除し、コントロールが適切にレンダリングされるかどうか確認してください。

+0

ありがとう...あなたの命の恩人。 =) –

+0

あなたは大歓迎です - 助けになるのはうれしいです:) – Tim

関連する問題