Ответ 1
Отвечая на мою собственную нить... Я получил отличную внутреннюю часть с форума asp.net и решил опубликовать решение здесь: Воспроизведение объяснений, которые помогли мне:
Надеюсь, что некоторые вопросы будут устранены другими пользователями, которые могут столкнуться с одной и той же проблемой.
Бест, JY
Blockquote Привет, JY,
Короткий ответ заключается в том, что при компиляции оператора Bind существуют некоторые ограничения на извлечение значений для вставки/обновления. Если элементы управления в FormView затем находятся в другом контейнере имен (TabContainer и TabPanel - оба контейнера с именами), компилятор не может решить, как извлечь значение из TextBox. У меня есть более подробное обсуждение этого в моем блоге на http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx.
Чтобы обойти это, вам нужно извлечь значения вручную, например:
protected void FormView1_ItemUpdating (отправитель объекта, FormViewUpdateEventArgs e) { // Получить ссылки на элементы управления TextBox LastNameTextBox = FormView1.FindControl( "TabContainer1" ). FindControl ( "TabPanel1" ). FindControl ( "LastNameTextBox" ) как TextBox;
// Set update parameters in datasource
ObjectDataSource1.UpdateParameters["LastName"].DefaultValue = LastNameTextBox.Text;
}
Так как FindControl ищет только текущий контейнер именования, вам нужно прокопать каждый контейнер имен (FormView, TabContainer и TabPanel), чтобы добраться до TextBox.
Надеюсь, что это поможет.
Аарон
Blockquote