在InsertItemTemplate中设置多行文本框的最大长度

时间:2013-05-24 18:19:31

标签: asp.net textbox maxlength

我正在尝试设置多行文本框的最大长度。我遇到的障碍是我无法在页面加载时使用javascript设置它,因为它位于InsertItemTemplate中。在页面加载时,它会抛出一个javascript错误(错误:无法设置未定义或空引用的属性'maxLength'),直到我添加一条记录并显示InsertItemTemplate。

        <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
        <script type="text/javascript">
        function onPageLoad() {
            var txtAddNotes = document.getElementById("formViewNewItem_NotesTextBox");
            txtAddNotes.maxLength = 200;
         }
        </script>
        </head>
            <body onload="onPageLoad()">
       <asp:FormView ID="formViewNewItem" runat="server" DataKeyNames="ID" 
        DataSourceID="datasource1" OnDataBound="formViewNewItem_DataBound">
            <InsertItemTemplate>
            <asp:TextBox ID="NotesTextBox" runat="server" Text='<%# Bind("Notes") %>' TextMode="MultiLine" Rows="3" Width="350px" />
            </InsertItemTemplate>
       </asp:FormView>
    </body>
    </html>

1 个答案:

答案 0 :(得分:1)

尝试更改formview DefaultMode="Insert",然后您的脚本应该能够在页面加载时找到文本框。希望这会有所帮助。

修改
您可以通过在页面加载时检查formview的当前模式来尝试调用js函数:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(formViewNewItem.CurrentMode == FormViewMode.Insert)
        {
             ClientScript.RegisterStartupScript(this.GetType(), "PageLoad", "onPageLoad();", true);
        }
    }