συστατικό Προσαρμοσμένη Ext.Net δυναμικά αρχικοποίησης

ψήφοι
1

Είμαι προσπαθεί να δημιουργήσει ένα προσαρμοσμένο στοιχείο. Το στοιχείο πρέπει δυναμικά προετοιμαστεί σε κώδικα πίσω. Η συνιστώσα παρουσιάζει ένα προσαρμοσμένο παράθυρο που περιέχει άλλα συστατικά, όπως datefields, αναπτυσσόμενο τομέα κλπ που προέρχονται τάξη μου από Ext.Net.Window και πρόσθεσε απλά DateField. Η ημερομηνία θα πρέπει από το να χρησιμοποιηθεί με ένα κουμπί κλικ στο διακομιστή (ημερομηνία, δεν θα πρέπει να περάσει πάνω από την παράμετρο DirectMethod). Όταν προσθέσετε αυτό το στοιχείο για να σηματοδοτήσει-up λειτουργεί τέλεια. Αλλά όταν μπορώ να προσθέσω το παράθυρο κώδικα πίσω, η αξία της datefield δεν έχει οριστεί μετά την κλήση του διακομιστή. Είμαι δημιουργώντας το παράθυρο του κύκλου ζωής εκδήλωση OnInit σε με «Controls.Add (mywindow)». Θα ήταν υπέροχο αν κάποιος μπορούσε να μου δώσει μια υπόδειξη. Εδώ κωδικό παράθυρό μου (onExecuteButtonClick ακριβώς ζητά την άμεση μέθοδο και κρύβει το παράθυρο):

public sealed class WindowFilterComponent:Window
{
    private const string Script = MyProject.JavaScript.src.WindowFilterComponent.js;

    public override string InstanceOf
    {
        get
        {
            return MyProject.Filter.WindowFilterComponent;
        }
    }

    public override string XType
    {
        get
        {
            return windowfiltercomponent;
        }
    }

    private Button _btnExecute;

    private Button _btnCancel;

    private DateField _dateField;


    protected override void OnInit(EventArgs e)
    {       
        AutoHeight = true;
        _btnExecute = new Button(Execute Export);
        _btnExecute.Listeners.Click.Handler = string.Format(#{`0`}.onExecuteButtonClick(), ID);
        _btnCancel = new Button(Cancel);
        _btnCancel.Listeners.Click.Handler = string.Format(#{`0`}.onCancelButtonClick(), ID);
        Buttons.Add(_btnExecute);
        Buttons.Add(_btnCancel);
        _dateField = new DateField();
        Items.Add(_dateField);
        base.OnInit(e);
    }       

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        if (ExtNet.IsAjaxRequest || Page.IsCallback) return;
            ResourceManager.GetInstance().AddDirectMethodControl(this);
    }

    [DirectMethod(ShowMask = true)]
    public void ExecuteClick()
    {
        var date = _dateField.SelectedValue;            
    }
}

Τώρα, η χρίση στη σελίδα μου σε περίπτωση OnInit:

protected override void OnInit(EventArgs e)
{    
    var myWindow = new WindowFilterComponent()
            {
                Hidden = false,
                Width = 500             
            };
    myWindow.ID = myWindow.ID + MyComponent;
    Controls.Add(myWindow);
    base.OnInit(e);
}
Δημοσιεύθηκε 28/09/2014 στις 12:27
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Νομίζω ότι το παράθυρο παρέχεται εκτός του εντύπου.

Παρακαλώ αντικαταστήστε

Controls.Add(myWindow);

με

Form.Controls.Add(myWindow);

Επίσης, θα ήθελα να συστήσω να δημιουργήσει σαφή αναγνωριστικά για τις submittable πεδία (η DateField στην περίπτωσή σας) για να διασφαλιστεί ότι το κλειδί id από τα δεδομένα POST θα ταιριάζει με το ID του ελέγχου στο διακομιστή.

Απαντήθηκε 29/09/2014 στις 11:24
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more