简体   繁体   English

无法从代码隐藏中找到控件,但能够找到其他控件

[英]Unable to Find the Control from codebehind, but able to find other controls

I am able to find the controls of all of these Lables and TextBoxes accept the edateTB. 我能够找到所有这些Lables和TextBoxes的控件接受edateTB。 This is strange to me because it is in the same view as the sdateTB. 这对我来说很奇怪,因为它与sdateTB在同一视图中。 So why would edateTB return NULL when I try to use FindControl on it and sdateTB return the correct control? 那么当我尝试在其上使用FindControl并且sdateTB返回正确的控件时,为什么edateTB会返回NULL?

Thanks in Advance, this one has been frustrating me for awhile. 在此先感谢,这一次让我感到沮丧。

Here is the codebehind where I am getting this error. 这是我收到此错误的代码隐藏。 There is more code in this, but I just thought I would include everything up to the part where I get the NULL error. 这里有更多的代码,但我只是想我会把所有内容都包含在我得到NULL错误的部分。

 protected void ReservationDetail_DataBound(object sender, EventArgs e)
{


    TextBox idBox = (TextBox)dvReservationDetail.FindControl("tbID");
    int id = int.Parse(idBox.Text);
    Label specDays = (Label)dvReservationDetail.FindControl("DaysHdr");
    Label weekdays = (Label)dvReservationDetail.FindControl("WeekdaysHdr");
    ListBox dates = (ListBox)dvReservationDetail.FindControl("DatesList");
    Label days = (Label)dvReservationDetail.FindControl("WeekdaysLbl");
    Label sdate = (Label)dvReservationDetail.FindControl("startDateLbl");
    TextBox sdateTb= (TextBox)dvReservationDetail.FindControl("startDateTB");
    Label eDate = (Label)dvReservationDetail.FindControl("endDateLbl");
    TextBox edateTB = (TextBox)dvReservationDetail.FindControl("endDateTB");
}

Here is the Detailsview where the labels and Textboxes are. 这是标签和文本框所在的详细信息视图。

<asp:DetailsView ID="dvReservationDetail" runat="server" DataSourceID="SqlDetail"
                    OnDataBound="ReservationDetail_DataBound" CssClass="detailgrid" GridLines="None"
                    DefaultMode="Edit" AutoGenerateRows="false" Visible="false" Width="100%" OnItemUpdating="ReservationDetail_Updating">
                    <Fields>
                        <asp:TemplateField HeaderText="ID">
                            <EditItemTemplate>
                                <asp:TextBox ID="tbID" runat="server" Text='<%# Bind("id") %>' ReadOnly="true" />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField HeaderText="LabName" DataField="labName" />
                        <asp:BoundField HeaderText="Class" DataField="class" />
                        <asp:BoundField HeaderText="Class Size" DataField="classSize" />
                        <asp:TemplateField HeaderText="Software">
                            <EditItemTemplate>
                                <asp:ListBox ID="software" Width="150" runat="server" ReadOnly="true" />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Start Time">
                            <EditItemTemplate>
                                <asp:TextBox ID="startTime" runat="server" Text='<%# Bind("startTime") %>' />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="End Time">
                            <EditItemTemplate>
                                <asp:TextBox ID="endTime" runat="server" Text='<%# Bind("endTime") %>' />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <asp:Label ID="WeekdaysHdr" runat="server" Visible="false" Text="Days Reserved By Week"></asp:Label>
                                <asp:Label ID="DaysHdr" runat="server" Visible="false" Text="Specific Days Reserved"></asp:Label>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:ListBox ID="DatesList" runat="server" Visible="false"></asp:ListBox>
                                <asp:Label ID="WeekdaysLbl" runat="server" Text='<%# Bind("Weekday") %>' Visible="false"></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <asp:Label ID="startDateLbl" runat="server" Visible="false" Text="Start Date"></asp:Label></HeaderTemplate>
                            <ItemTemplate>
                                <asp:TextBox ID="startDateTB" runat="server" Visible="false" Text="Test"></asp:TextBox></ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <asp:Label ID="endDateLbl" runat="server" Visible="false" Text="End Date"></asp:Label></HeaderTemplate>
                            <ItemTemplate>
                                <asp:TextBox ID="endDateTB" runat="server" Visible="false" Text=""></asp:TextBox></ItemTemplate>
                            <ItemTemplate>
                                <asp:TextBox ID="repeatTypeTB" runat="server" Visible="false" Text='<%# Bind("repeats") %>'></asp:TextBox></ItemTemplate>
                        </asp:TemplateField>
                        <%-- <asp:CommandField ShowEditButton="true" />--%>
                    </Fields>
                </asp:DetailsView>

It looks like you have 2 ItemTemplate tags in your last TemplateField tag. 看起来您的上一个TemplateField标记中有2个ItemTemplate标记。 Notice: 注意:

<asp:TemplateField> 
    <HeaderTemplate> 
        <asp:Label ID="endDateLbl" runat="server" Visible="false" Text="End Date"></asp:Label></HeaderTemplate> 
    <ItemTemplate> 
        <asp:TextBox ID="endDateTB" runat="server" Visible="false" Text=""></asp:TextBox></ItemTemplate> 
    <ItemTemplate> 
        <asp:TextBox ID="repeatTypeTB" runat="server" Visible="false" Text='<%# Bind("repeats") %>'></asp:TextBox></ItemTemplate> 
</asp:TemplateField> 

It is possible that the first one that contains endDateTB is being ignored. 包含endDateTB的第一个可能被忽略。

It should look like: 它应该看起来像:

<asp:TemplateField> 
    <HeaderTemplate> 
        <asp:Label ID="endDateLbl" runat="server" Visible="false" Text="End Date"></asp:Label></HeaderTemplate> 
    <ItemTemplate> 
        <asp:TextBox ID="endDateTB" runat="server" Visible="false" Text=""></asp:TextBox></ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField> 
    <HeaderTemplate> 
        <asp:Label ID="repeatTypeLbl" runat="server" Visible="false" Text="Repeat"></asp:Label></HeaderTemplate> 
    <ItemTemplate> 
        <asp:TextBox ID="repeatTypeTB" runat="server" Visible="false" Text='<%# Bind("repeats") %>'></asp:TextBox></ItemTemplate> 
</asp:TemplateField> 

all the other lines are (label)dvreservationdetail... 所有其他行都是(标签)dvreservationdetail ...

the last line is (label)this.dvreservationdetail... 最后一行是(标签)this.dvreservationdetail ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM