Frage

Das Setup:. Web-Formular mit vielen Textboxsteuerelemente

Bei der Einstellung ich einem der Enabled-Eigenschaft des TextBox-Steuerelement auf False, ich möchte „swap“, die zur Laufzeit für ein Label TEXTBOX aus. Die Idee dabei ist, wenn es nur irgendwie gelesen hat, kann es nicht für die Bearbeitung entworfen in einer Steuer angezeigt werden soll.

Ich denke, das sollte ziemlich einfach und wiederverwendbar sein, aber was ist der beste Weg, dies zu tun?

War es hilfreich?

Lösung

Nicht sicher sein die beste Art und Weise, ich würde eine benutzerdefinierte Serversteuer macht, ist eine Textbox,

dann außer Kraft setzt die Render-Methode, überprüfen, ob es nur lesbar ist,

, wenn sie gelesen wird nur dann span-Tags wie ein Label-Steuerelemente machen tut.

wenn nicht, dann lassen Sie die Basis (Textbox) machen übernehmen ...

public class SpecialTextbox : TextBox
{
    public override void RenderControl(HtmlTextWriter writer)
    {
        if (!this.ReadOnly)
        {
            base.RenderControl(writer);
        }
        else
        {
            writer.Write(string.Format("<span id=\"{0}\" class=\"{1}\">{2}</span>", 
                            this.ClientID, 
                            this.CssClass, 
                            this.Text));
        }
    }
}

Andere Tipps

Eine mögliche Lösung wäre, eine neue Kontrolle erstreckt TextBox zu erstellen. Ihre Fachsteuerung würde dann außer Kraft gesetzt (von Teilen) dem Rendering-Code, die Steuerung bewirkt, dass ein Etikett ähnlich zu machen, wenn Readonly = true.

Eine andere Möglichkeit wäre in mit einem Steuerungsadapter suchen sein. Sie würden im Wesentlichen der Lage, genau die gleiche Sache zu tun, die BigBlondeViking reccomends, aber man konnte ein regelmäßiges asp verwenden coninue: Textbox-Steuerelement in Ihrem Code. Das wird viel einfacher für Sie und andere Entwickler.

Über Steuer Adapter

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top