Search code examples
javascriptc#jqueryvisual-studio-2013repeater

Add bootstrap datetimepicker to TextBox inside a repeater in C#


This is my code for repeater

<asp:Repeater ID="RepeaterTrackingInformation" runat="server" OnItemDataBound="RepeaterTrackingInformation_ItemDataBound">

    <HeaderTemplate>
        <table class="table table-condensed table-responsive">
            <tr>
                <th>Department</th>
                <th>SentTo Date</th>
                <th>Approved Date</th>
            </tr>
    </HeaderTemplate>

    <ItemTemplate>
            <tr>
                <td>
                    <asp:Label ID="LabelDepartmentName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Department") %>'></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="TextBoxSentTo" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "SentTo") %>'></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox ID="TextBoxApproved" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReceivedFrom") %>'></asp:TextBox>
                </td>
            </tr>
    </ItemTemplate>

    <FooterTemplate>
    </table>
    </FooterTemplate>

</asp:Repeater>

Everything is working fine. I need to add a bootstrap datetimepicker to every TextBox, I can do this with the following example, like this

$('#datetimepickerStartDate').datetimepicker({
    pickTime: false
});

Here is my quesiton. How do I attach .datetimepicker inside a repeater using jQuery or JavaScript. I can NOT get at TextBoxSetTo because .NET generates different dynamic IDs.

I tried this

var rep = $('<%=RepeaterTrackingInformation.ClientID%>'); 

Solution

  • Add CssClass inside your repeater:

    <asp:Repeater ID="RepeaterTrackingInformation" runat="server" OnItemDataBound="RepeaterTrackingInformation_ItemDataBound">
    
    <HeaderTemplate>
        <table class="table table-condensed table-responsive">
            <tr>
                <th>Department</th>
                <th>SentTo Date</th>
                <th>Approved Date</th>
            </tr>
    </HeaderTemplate>
    
    <ItemTemplate>
            <tr>
                <td>
                    <asp:Label ID="LabelDepartmentName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Department") %>'></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="TextBoxSentTo" CssClass="datepicker"  runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "SentTo") %>'></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox ID="TextBoxApproved" CssClass="datepicker"  runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReceivedFrom") %>'></asp:TextBox>
                </td>
            </tr>
    </ItemTemplate>
    
    <FooterTemplate>
    </table>
    </FooterTemplate>
    
    </asp:Repeater>
    

    Then in javascript:

    $('.datepicker').datetimepicker({
        pickTime: false
    });