Как получить TextBox из DetailsView - ASP.NET - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть элемент управления DetailsView, внутри в качестве шаблона TextBox.Мне нужно узнать значение для TextBox при вставке данных Обработчик событий -, _ItemInserting.

Скрипт не работаетМуравьиные идеи ??Спасибо

-------------------- ВЕБ-ФОРМА

<asp:TemplateField HeaderText="Profile" SortExpression="ContentAuthor">
                <ItemTemplate>
                    <asp:Label ID="uxContentAuthorDisplayer" runat="server" Text='<%# Bind("ContentAuthor") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="uxContentAuthorInput" runat="server" Text='<%# Bind("ContentAuthor") %>'></asp:TextBox>
                </InsertItemTemplate>
            </asp:TemplateField>

-------------------- Код за

          protected void uxInsertAuthor_ItemInserting(object sender, DetailsViewInsertEventArgs e)
        {
            //// Find control on page
            TextBox myAuthorProfile = (TextBox)uxInsertAuthorInput.FindControl("uxContentAuthorDisplayer");
            // Set a default value in Data Base if field has been left empty (DB field NOT NULL)           
            if (string.IsNullOrEmpty(myAuthorProfile.Text))
            {
                string myAllert = "Field is NULL";
            }
            else
            {
                string myAllet = "Field is NOT NULL";
            }          
        }

Ответы [ 3 ]

1 голос
/ 09 ноября 2010

Другой вариант - получить значение из DetailsViewInsertEventArgs.У него есть свойство с именем Values, которое представляет собой словарь со всеми связанными значениями, которые поступают в базу данных из DetailsView.Таким образом, вы могли бы сделать следующее:

if (string.IsNullOrEmpty(e.Values("ContentAuthor")))
{
  string myAlert = "Field is NULL";
}
else
{
  string myAlert = "Field is NOT NULL";
}  
1 голос
/ 09 ноября 2010

Попробуйте использовать FindControl метод управления вашим контейнером TemplateField (DetailsView).Например, если ваш DetailsView называется «MyControl», попробуйте

//// Find control on page
TextBox myAuthorProfile = (TextBox)MyControl.FindControl("uxContentAuthorInput");

Обратите внимание

Вы используете идентификатор элемента управления Label в своем методе FindControl и пытаетесьприведите его к TextBox.

0 голосов
/ 09 ноября 2010

Если я правильно понял, вы хотите проверить значение TextBox при вводе данных в DetailsView. Событие ItemInserting - это не то, что вам нужно:

http://msdn.microsoft.com/en-us/library/keezbt7k.aspx

Я бы сказал, ItemCreated это то, что вы ищете.

...