Convertir le Contrôle de zone de texte et de lui assigner une valeur

Je suis en train de créer un formulaire. Les contrôles de formulaire noms sont toujours les mêmes. Cependant, le type de contrôle va changer. Par exemple, j'ai un champ "prenom". Lorsque la page est initialisé, il récupère des données à partir d'une base de données indiquant que le type de contrôle (zone de texte, liste déroulante ou une Case à cocher); Ensuite, le formulaire est créé dynamiquement sur la page. Pour garder le viewstate, j'ai créé le contrôle dans la méthode OnInit.

protected override void OnInit(EventArgs e)
{
    Control first_name;
    string ControlType = GridView1.Rows[0].Cells[1].Text;
    switch (ControlType)
    {
        case("TextBox"):
            first_name = new Control() as TextBox; first_name.ID = "first_name"; this.Controls.Add(first_name);
            break;
        case("DropDownList"):
            first_name = new Control() as DropDownList; first_name.ID = "first_name"; this.Controls.Add(first_name);
            break;
        case("CheckBox"):
            first_name = new Control() as CheckBox; first_name.ID = "first_name"; this.Controls.Add("first_name");
            break;
    }
}

Puis-je rendre le contrôle à la page.

protected override void Render(HtmlTextWriter writer)
{
    writer.Write("first_name: ");
    first_name.RenderControl(writer);
}

Prochaine, j'essaie d'assigner des valeurs à la commande. C'est là que je rencontre des problèmes. Je sais que quand elle est déclarée à l'échelle mondiale, il est déclaré comme un contrôle et détient ces valeurs.

Est-il un moyen de le déclarer à l'échelle mondiale à partir de l'intérieur d'une fonction ou pour modifier le type d'un contrôle après avoir été déclarée à l'échelle mondiale?

protected void Page_Load(object sender, EventArgs e)
{
    switch (first_name.GetType().ToString())
    {
        case ("TextBox"):
            first_name.Text = "Your First Name...";
            break;
        case ("DropDownList"):
            first_name.Items.Add("Jason");
            first_name.Items.Add("Kelly");
            first_name.Items.Add("Keira");
            first_name.Items.Add("Sandi");
            first_name.Items.Add("Gary");
            break;
        case ("CheckBox"):
            first_name.Checked = true;
            break;
    }        
}

Veuillez fournir un moyen que je peux accomplir cela.

  • -1 pour la question depuis que le code est loin d'être encore compilable
InformationsquelleAutor user1663870 | 2012-11-13