Мне нужно динамически изменять «формат номера» текстового поля, находящегося внутри элемента itemTemplate. Ничто из того, что я пробовал, не работает, и я был бы признателен за некоторые идеи.Изменение формата форматирования asp: TextBox в ItemTemplate из Code-Behind
очень упрощенная версия оригинального кода заключается в следующем:
<asp:GridView ID="gv1">
<Columns>
<asp:TemplateField HeaderText="Xfer From">
<ItemTemplate>
<asp:TextBox ID="txtTransferFrom" runat="server" Text='<%# Bind ("FundValueTransferFrom", "{0:0.00}") %>' />
<asp:RangeValidator ID="val1" runat="server" ControlToValidate="txtTransferFrom" Type="Currency" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Пожалуйста, обратите внимание на десятичное форматирование («{0: 0,00}») и валюты типа связанного поля.
Теперь, что мне нужно сделать, в соответствии с настройкой переключателя на этой странице, изменить, что форматирование. В одном государстве он должен быть валютой с двумя знаками после запятой; в другой - от трех до десяти знаков.
Это звучит просто, но я не могу заставить его работать. В идеале я хотел бы поместить некоторый код в метод radioButton_SelectedIndexChanged, но я не могу получить доступ к этому форматированию.
Я также попытался использовать оператор «if» в встроенном коде (<%%>) на странице ASPX, но он не отвечает на изменение переключателей. Я должен упомянуть, что эта сетка находится внутри панели обновления ... Я попытался позвонить UP.Update(), но это не устраняет проблему. Я удалил исходное форматирование со страницы ASPX, чтобы он не мешал - ничего.
Одним из решений могло быть форматирование числовых строк в коде, но я не могу - сетка привязана к объекту, поля которого «удваиваются», а не строки ... преобразование в строки что происходит неявно в привязке данных.
У меня нет другого подхода, я мог бы попытаться включить это форматирование программно? Заранее благодарим за проницательность!
Почему бы не использовать текст = '<% # ((YourDataType) Container.DataItem). FundValueTransferFrom.ToString ("0.00")%> '? И для вашего формата используйте метод: Text = "<% # GetMyAmountInMyFormat ((YourDataType) Container.DataItem)%>" – Dacker
Спасибо за ответ. Я не уверен, что полностью понимаю. Когда я пытаюсь использовать что-то вроде того, что у вас есть, IntelliSense недовольна этим. Я также попытался просто преобразовать строку формата в переменную, которую я мог бы извлечь из кода, например: Текст = '<% # Bind ("FundValueTransferTo", "{0: 0.00}")%>' И в коде-за: приватная строка _numForm = @ "{0: 0.00}"; public string NumFormat {get {return_numForm; }} Но это сбой с «неправильным форматом». – AlanTK
Я думаю, что Intellisense имеет проблемы из-за одинарной кавычки для атрибута текста. Если вы выполните Text = "<% # GetMyAmountInMyFormat ((YourDataType) Container.DataItem)%>" и поместите всю логику в метод GetMyAmountInMyFormat intellisense не будет проблем.Intellisense - это не самая важная вещь, но вам нужно будет найти баланс между логикой в разметке и кодом для удобства чтения и обслуживания. – Dacker