.FindControl не работает с моего С#

Я хочу установить некоторые из моих элементов управления в FormView вручную, а некоторые из источника данных SQL.

Вот фрагмент моего кода:

 <asp:FormView runat="server" DataSourceID="ds_Sco_Post_Reference_Data" ID="frmview1">
        <ItemTemplate>
                <div class="customer-details-inception-date">
                        <label class="applicationfont">Inception Date:</label>
                        <asp:TextBox CssClass="smallinputbox" runat="server" ID="txt_customer_details_inception_date" Text='<%# Bind("InceptionDate") %>' />
                </div>
                <div class="customer-details-renewal-date">
                        <label class="applicationfont">Renewal Date:</label>
                        <input class="smallinputbox" runat="server" id="txt_customer_details_renewal_date" readonly="readonly" />
                </div>
                <div class="customer-details-date-complient-logged">
                        <label class="applicationfont">Date Complient Logged:</label>
                        <asp:TextBox CssClass="smallinputbox" runat="server" id="txt_customer_details_date_complient_logged" />
                </div>
        </ItemTemplate>
</asp:FormView>

Я хочу иметь возможность найти элемент управления txt_customer_details_date_complient_logged и пробовал много разных кодов С#.

Вот пример, который не работает:

FormView cph = (FormView)this.FindControl("frmview1");
TextBox t = ((TextBox)cph.FindControl("txt_customer_details_date_complient_logged"));
t.Text = DateTime.Now.ToString("d");

Кто-нибудь знает, почему я не могу заставить это работать?


person Ben Clarke    schedule 16.07.2014    source источник
comment
asp.net имеет тенденцию ставить элементы управления префиксом. Чтобы убедиться, что элемент управления по-прежнему имеет то же имя во время работы приложения, вы должны просмотреть исходный код в браузере и выполнить поиск имени элемента управления.   -  person Bayeni    schedule 16.07.2014
comment
Вы пробовали: TextBox t = (TextBox)frmview1.FindControl(txt_customer_details_date_complient_logged);   -  person Kinyanjui Kamau    schedule 16.07.2014
comment
@Bayeni 'ctl04$txt_customer_details_renewal_date' — это имя, которое появляется в источнике.   -  person Ben Clarke    schedule 16.07.2014
comment
@KinyanjuiKamau Да, он возвращает NuLL.   -  person Ben Clarke    schedule 16.07.2014
comment
@user3129331 user3129331 вы убедились, что ваша привязка данных работает / ваш источник данных не является нулевым? Если нет результатов/если элемент управления еще не привязан, это текстовое поле не будет отображаться. Чтобы проверить это, вы можете сделать emptyItemTemplate и привязать источник - FormView.findControl должен работать нормально.   -  person therak    schedule 16.07.2014
comment
@therak Я не привязываю данные к этому элементу управления, я хочу установить его вручную.   -  person Ben Clarke    schedule 16.07.2014
comment
@user3129331 user3129331 хорошо, но даже если вы не хотите выполнять привязку данных, представление списка формы не будет отображать свой ItemTemplate/EmptyItemTemplate, если нет элементов/нет привязки данных. вы никогда не найдете элемент управления, потому что он не будет отображаться. вы по-прежнему можете вызывать FormView.DataBind даже без источника данных. Просто протестируйте его с помощью EmptyItemTemplate, и вы увидите.   -  person therak    schedule 16.07.2014
comment
Можете ли вы проверить эту ссылку stackoverflow.com/questions /2171427/   -  person Lakpa Sherpa    schedule 16.07.2014