我正在尝试设置多行文本框的最大长度。我遇到的障碍是我无法在页面加载时使用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>
答案 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);
}
}