2012-01-12 9 views
7

Mam dynamicznie utworzony TextBox w/ASP.NET strony C#, który chcę przystosować do przeglądarek mobilnych:Jak ustawić input type = "number" na dynamiczny tekstowego w C# kodzie

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

I zobaczyć, że mogę bezpośrednio ustawić to w zwykłym HTML <form>:

<input type="number"> 

... które następnie wywołać klawiaturę numeryczną.

W jaki sposób mogę to zrobić z moim dynamicznym TextBox w funkcji codebehind, czy mogę?

Czy istnieje alternatywny sposób dynamicznego wprowadzania liczbowej kontroli wprowadzania danych na stronie z kodu, który działałby lepiej? Czy muszę używać JavaScript, aby "zhakować" kontrolę po renderowaniu? (Wolałbym mieć sposób .NET robi to jeśli to możliwe).

+0

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

Odpowiedz

9

Piszę to z pamięci, ale myślę, że to:

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

Myślę, że potrzebujesz [SetAttribute] (http://msdn.microsoft.com/en-us/library/system.web.ui .htmlcontrols.htmlcontrol.setattribute.aspx) na HtmlControls, prawda? –

+0

Zakładam, że odwołuje się do 'System.Web.UI.WebControls.TextBox', a nie HtmlControl. –

+0

Doskonale, dziękuję! (Tak, to było tak, jak zakładałeś John.) – Deverill

0

Można to zrobić za pomocą niestandardowego formantu. Proszę bardzo ...

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); 
     } 
    } 
} 

zarejestrować go na stronie aspx ..

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

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

Atrybut type zostanie pobrana z własności modifyType powyżej. Może to być również waluta lub dowolny inny typ z obsługą HTML5.

+1

Jest to niepotrzebne, chyba że nie można zastosować [aktualizacji] (http://support.microsoft.com/kb/2533523) do ASP.Net, który właściwie rozwiązuje ten problem. –

3

Dla każdego, kto jeszcze tu przyjeżdżać z tym samym problemem, kilka miesięcy po otwarciu OP to pytanie Microsoft wydała aktualizację, która rozwiązuje ten problem:

http://support.microsoft.com/kb/2533523 (patrz numer wydania 12).

W przypadku programu Visual Studio 2010, jeśli próbujesz go zainstalować i mówi, że nie dotyczy Ciebie, sprawdź, czy masz VS2010 SP1. W takim przypadku samo zainstalowanie dodatku SP1 może rozwiązać problem. Plik do pobrania można znaleźć pod adresem http://www.microsoft.com/en-us/download/details.aspx?id=23691.

+1

Dziękujemy za aktualizację! Jestem pewien, że inni to docenią. – Deverill

Powiązane problemy