错误:'this._targetEl.value.length'为null或不是ASP.NET对象

时间:2011-05-13 00:32:14

标签: c# javascript asp.net

我正在尝试将日期选择器中的选定值绑定到asp文本框但我有这个错误:'this._targetEl.value.length'为null或不是对象。

以下是代码:

<InsertItemTemplate>
    Book Title:
    <asp:DropDownList ID="DropDownList1" runat="server" 
        DataSourceID="booktitleDataSource" DataTextField="booktitle" 
        DataValueField="bookid" SelectedValue='<%# Bind("bookid", "{0}") %>'>
    </asp:DropDownList>
    <asp:SqlDataSource ID="booktitleDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:LibrarySystemConnectionString %>" 
        SelectCommand="SELECT [bookid], [booktitle] FROM [TblBooks]">
    </asp:SqlDataSource>
    <br />

    Employee PIN:
    <asp:TextBox ID="employeeidTextBox" runat="server" 
        Text='<%# Bind("employeeid") %>' />
    <br />

    Department:
    <asp:TextBox ID="departmentTextBox" runat="server" 
        Text='<%# Bind("department") %>' />
    <br />

    Date borrowed:
    <asp:TextBox ID="dateborrowedTextBox" runat="server" Text='<%# Bind("dateborrowed") %>' /> 
<%--<input type="text" name="dateborrowedTextBox" readonly="readonly" id="dateborrowedTextBox">--%> 
    <a href="#" onclick="cdp1.showCalendar(this, 'dateborrowedTextBox'); return false;">Date Picker</a>       
    <br />

    <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
        CommandName="Insert" Text="Insert" />
    <asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" 
        CommandName="Cancel" Text="Cancel" />
</InsertItemTemplate>

我工作的时候 尝试使用<input type="text" name="dateborrowed" readonly="readonly" id="dateborrowedTextBox">但是当我尝试使用asp:TextBox时,我无法将选定的值从日期选择器传递到文本框。那我哪里出错了?有没有办法对日期选择器链接进行编程以调用弹出日历? (它在Java btw中)

非常感谢帮助! 提前谢谢。

2 个答案:

答案 0 :(得分:1)

嵌套控件在呈现时会使用绝对唯一ID /名称覆盖其ID / name属性。当你的javascript试图引用TextBox时,它的名字实际上不是'dateborrowedTextBox',它将类似于'... $ ctl00 $ dateborrowedTextBox'。

如果您的javascript按名称查找控件,则可能会解决问题:

<a href="#" onclick="cdp1.showCalendar(this, '<%#Container.FindControl("dateborrowedTextBox").UniqueID%>'); return false;">Date Picker</a>

如果它通过id找到控件,请尝试这个:

  <a href="#" onclick="cdp1.showCalendar(this, '<%#Container.FindControl("dateborrowedTextBox").ClientID%>'); return false;">Date Picker</a>

答案 1 :(得分:0)

找到解决方案。我认为它只能读取asp.net语法而不是经典的asp。

<asp:TextBox ID="reservedateTextBox" runat="server" Text='<%# Bind("reservedate") %>' />
<%--Date Picker--%>
<a href="#" onclick="cdp1.showCalendar(this,'ctl00$ContentPlaceHolder1$FormView2$reservedateTextBox'); return false;">Date Picker</a>