(ASP.NET)在GridView中更改TextBoxes属性(onkeypress)

时间:2014-11-05 14:54:29

标签: asp.net gridview textbox attributes onkeypress

我有一个带文本框的GridView,每行一个。 我需要更改属性" onkeypress"验证密钥。

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

但是当生成文本框时,JavaScript不起作用。为什么呢?

我无法在ASP部分执行此操作,因为我希望文本框具有不同的JavaScript方法&#34; if&#34;代码背后的条款。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我输入了asp:GridView属性onrowdatabound =&#34; GridView1_RowDataBound&#34;似乎工作正常。在代码背后,我把...

<asp:GridView ID="gridview_1" DataSourceID="SqlDataSource3" AutoGenerateColumns="false" onrowdatabound="GridView1_RowDataBound" runat="server">

在代码背后:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.DataItem != null)
    {
      TextBox textBox1 = e.Row.FindControl("textbox_1") as TextBox;
      textBox1.Attributes.Add("onkeypress","javascript:return validateFloatKeyPress(this, event);");
    }
}

它运作正常,我认为:)