Diskuze: Uživatelský ovládací prvek.

C# .NET .NET (C# a Visual Basic) Uživatelský ovládací prvek. American English version English version

Avatar
sexton
Člen
Avatar
sexton:

Ahoj, zkouším si vytvořit uživatelský ovládací prvek(UOP). Část kódu která se bude opakovat na více stránkách jsem si uložil do souboru Box.ascx. Na webové stránce prvek registruji:
<%@ Register src="Box.ascx" tagname="Box" tagprefix="uc1" %>
Potud mě jde vše ok, stránka je v prohlížeči zobrazena i s UOP.
Nepřišel jsem ale na to jak měnit vlastnosti jednotlivých prvků. Než jsem dal část kódu do UOP stačilo např. Label1.Text = "NOVY TEXT"; ale teď nemůžu přijít na to, jak to udělat když prvek je součástí UOP.
Díky za rady.

 
Odpovědět 28.10.2014 19:35
Avatar
CSharp
Člen
Avatar
CSharp:

Do zdrojového kódu ovládacího prvku nastav veřejné vlastnosti, ke kterým budeš moct přímo přistupovat i z WebForms takže například takto:

public partial class box : System.Web.UI.UserControl
{
    public String text
    {
        get; set;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = text;
    }
}

a kód samotného webového formuláře:

<%@ Page Language="C#" %>

<%@ Register Src="~/box.ascx" TagPrefix="uc1" TagName="box" %>


<!DOCTYPE html>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        box.text = "Ahoj světe";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:box runat="server" ID="box" />
    </div>
    </form>
</body>
</html>
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 28.10.2014 20:01
Avatar
sexton
Člen
Avatar
 
Nahoru Odpovědět 28.10.2014 21:08
Avatar
sexton
Člen
Avatar
Odpovídá na sexton
sexton:

Mám ještě jeden zádrhel,
potřebuji nastavit počáteční hodnoty TextBoxu. Když jsem je podle výše uvedeného návodu dal do Page_Load, a pak je na webovkách uživatelsky změnil, tak po provedení akce Buttonem se hodnota změnila zpět na hodnotu nastavenou v Page_Load.
Počítám, že počáteční hodnoty budu muset dát jinam než do Page_Load. Poradíte mi někdo kam?

protected void Page_Load(object sender, EventArgs e)
{
TextBox.Text ="100";
}

protected void Button_Click(object sender, EventArgs e)
{

}

 
Nahoru Odpovědět 5.11.2014 16:39
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na sexton
David Čápka:

Pokud řešení funguje, tak ho prosím označ jako akceptované. Pro další dotazy prosím příště vytvářej nová vlákna.

Nahoru Odpovědět 5.11.2014 16:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
CSharp
Člen
Avatar
Odpovídá na sexton
CSharp:

V tom co jsi napsal není divu, že se nic neděje. Metoda Button_Click nic nedělá. Jinak co já vím, tak akce Něco_Click se zpracovává potom co se zpracovává Page_Load, tudíž by se ta hodnota měla přepsat tou poslední použitou hodnotou..

Doporučuji ti přečíst si něco o životným cyklu stránky, usnadní ti to pak práci..

 
Nahoru Odpovědět 5.11.2014 19:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.