У меня есть GridView с текстовыми полями внутри, по одному для каждой строки. Мне нужно изменить атрибут «onkeypress» для проверки ключей.(ASP.NET) Изменение атрибутов TextBoxes (onkeypress) в GridView
<asp:Table runat="server">
<asp:TableRow runat="server">
<asp:TableCell runat="server">
<asp:GridView ID="gridview_1" DataSourceID="SqlDataSource3" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField HeaderText="textbox">
<ItemTemplate>
<asp:TextBox ID="textbox_1" CssClass="textbox_1" runat="server" Text='<%# Eval("sql_textbox")%>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:TableCell>
</asp:TableRow>
А в коде позади:
foreach (GridViewRow row in gridview_1.Rows)
{
TextBox txtbox = ((TextBox)gridview_1.Rows[row.RowIndex].FindControl("textbox_1"));
txtbox.Attributes.Add("onkeypress","javascript:return validateFloatKeyPress(this, event);");
}
Но когда Textboxes генерируются, то JavaScript не работает. Зачем?
Я не могу сделать это в части ASP, потому что я хочу, чтобы текстовые поля имели разные методы JavaScript с предложением «if» в коде позади.
спасибо.
вы получаете любую ошибку консоли для вашей функции JS? – Pranav
Нет, я не, но если я поместил свою js-функцию в asp: TextBox с onkeypress = "javascript: return validateFloatKeyPress (this, event);" он работает правильно. – andresfm
Я бы посмотрел на событие «RowDataBound» (в соответствии с ответом от @andresfm), но могу ли я спросить, почему вы выполняете 'gridview1.Rows [row.RowIndex]', когда это возвращает то же самое, что и «строка»? – freefaller