2012-01-12 13 views
7

Ho un TextBox creato in modo dinamico in una pagina web C#/ASP.NET che voglio adattarsi al browser mobile:Come impostare input type = "numero" su testo dinamico in C# codebehind

TextBox qtybox = new TextBox(); 
qtybox.ID="qtybox"; 
qtybox.Text = "0"; 
qtybox.Width = 30; 
container.Controls.Add(qtybox); 

I vedo che posso impostare direttamente questo in un semplice HTML <form>:

<input type="number"> 

... che poi far apparire la tastiera numerica.

Come posso fare questo con il mio TextBox dinamico nel codebehind, o posso?

C'è un modo alternativo per inserire dinamicamente un controllo numerico di input sulla mia pagina dal codebehind che funzionerebbe meglio? Devo usare JavaScript per "hackerare" il controllo dopo il rendering? (Preferisco avere un modo di .NET di farlo, se possibile.)

+0

http://forums.asp.net/p/1574486/3959550.aspx –

risposta

9

sto scrivendo questo a memoria, ma penso che sia:

qtybox.Attributes.Add("type", "number"); 
+1

Penso che sia necessario [SetAttribute] (http://msdn.microsoft.com/en-us/library/system.web.ui .htmlcontrols.htmlcontrol.setattribute.aspx) su HtmlControls, vero? –

+0

Suppongo che si riferisca a un 'System.Web.UI.WebControls.TextBox', non a un HtmlControl. –

+0

Perfetto, grazie! (Sì, era come pensavi John.) – Deverill

0

Questo può essere fatto utilizzando un controllo personalizzato. Qui si va ...

namespace CustomTextBoxControls 
{ 
    public class TextBoxWithType : TextBox 
    { 
     public string modifyType { get; set; } 

     protected override void Render(System.Web.UI.HtmlTextWriter output) 
     { 
      if (!string.IsNullOrEmpty(modifyType)) 
      { 
       output.AddAttribute("type", modifyType); 
      } 

      base.Render(output); 
     } 
    } 
} 

registrarlo nella pagina aspx ..

<%@ Register Namespace="CustomTextBoxControls" TagPrefix="CustomControl" Assembly="CustomTextBoxControls" %> 

<CustomControl:MaskedTextBoxWithType id="txtNumber" modifyType="number" runat="server"></CustomControl:MaskedTextBoxWithType> 

L'attributo type sarà preso dalla proprietà modifyType sopra. Quindi questo può essere anche di valuta o di qualsiasi altro tipo con supporti HTML5.

+1

Questo non è necessario a meno che non sia possibile applicare [l'aggiornamento] (http://support.microsoft.com/kb/2533523) a ASP.Net che corregge correttamente questo problema. –

3

Per chiunque ancora venire qui con lo stesso problema, pochi mesi dopo l'OP ha aperto questa domanda Microsoft ha rilasciato un aggiornamento che risolve il problema:

http://support.microsoft.com/kb/2533523 (vedi edizione numero 12).

Per Visual Studio 2010, se si tenta di installarlo e si dice che non si applica a voi, controllare di avere VS2010 SP1. In tal caso, la semplice installazione di SP1 potrebbe risolvere il problema. Il download può essere trovato a http://www.microsoft.com/en-us/download/details.aspx?id=23691.

+1

Grazie per l'aggiornamento! Sono sicuro che gli altri lo apprezzeranno. – Deverill

Problemi correlati