2010-11-03 2 views
1

Я могу найти элементы управления всех этих Lables и TextBoxes, принимающих edateTB. Это странно для меня, потому что оно находится в том же представлении, что и sdateTB. Так почему бы edateTB вернуть NULL, когда я пытаюсь использовать FindControl на нем, и sdateTB вернет правильный элемент управления?Невозможно найти элемент управления с помощью кода, но найти другие элементы управления

Спасибо, Advance, этот меня несколько раз разочаровал.

Вот код, где я получаю эту ошибку. В этом есть больше кода, но я просто подумал, что включу все в ту часть, где я получу ошибку 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"); 
} 

Здесь находится информация, в которой расположены ярлыки и текстовые поля.

<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> 
+0

this.dvReservationDetail ?? «это» выглядит по-другому. Надеюсь, вы бы это видели. Есть ли какие-либо цели? – franklins

+0

_this_ подразумевается в других строках, ссылающихся на dsReservationDetail; удаление его не должно иметь никакого значения. –

+0

О да, я просто поиграл, положив его туда, чтобы убедиться, что это исправит. – Isawpalmetto

ответ

4

Похоже, у вас есть 2 ItemTemplate теги в последний тег 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> 

Возможно, что первый, содержащий endDateTB, игнорируется.

Он должен выглядеть следующим образом:

<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> 
+0

Да, все. Глупый я. Благодаря! – Isawpalmetto

+2

+1 от меня. Я видел это и собирался опубликовать тот же ответ, когда моя жена позвонила мне, чтобы помочь накормить нашу дочку! –

0

все остальные строки (ярлык) dvreservationdetail ...

последняя строка (метка) this.dvreservationdetail ...

+0

Не имеет значения, это подразумевается, как сказал Майкл Тодд в комментариях. Я просто поставил это там, чтобы понять, исправит ли он это. – Isawpalmetto