Вставка с использованием FormView - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь вставить элементы, используя базовый элемент управления FormView.

Я немного новичок в C # и его элементах управления, так что терпите меня. FormView имеет стандартные записи, такие как:

ItemName
ItemPrice
ItemSize

Он также имеет элементы управления, которые будут скрыты от пользователя, такие как:

ItemDateCreated
ItemDatechanged
ItemChangedBy

Эти элементы я пытаюсь изменить их значения до того, как произойдет Insert (), поэтому я захватил событие InsertButton_Click ():

protected void InsertButton_Click(object sender, EventArgs e)
{
    LinkButton btnInsert = (LinkButton)FormView1.FindControl("InsertButton");
    TextBox txtDateAdded = (TextBox)FormView1.FindControl("ItemDateAddedTextBox");
    TextBox txtDateChanged = (TextBox)FormView1.FindControl("ItemDateChangedTextBox");
    TextBox txtChangedBy = (TextBox)FormView1.FindControl("ItemChangedByTextBox");

    txtDateAdded.Text = DateTime.Now.ToString("MMMM dd, yyyy");
    txtDateChanged.Text = DateTime.Now.ToString("MMMM dd, yyyy");
    txtChangedBy.Text = HttpContext.Current.Request.ServerVariables["AUTH_USER"].ToString();

    tblItems.Insert();
}

Он постоянно сообщает мне, что поле ItemName имеет значение NULL, и выдает ошибку, хотя я могу ясно видеть, что значение устанавливается в текстовом поле. Почему это значение выбрасывается как NULL? Нужно ли вручную создавать оператор INSERT перед вызовом Insert ()? Как бы я поступил так?

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Если значения полей установлены из системы, я бы рекомендовал делать это непосредственно в Sql , используя getdate , а не через код asp.net.

например:

insert into mytable (...,..., ItemDateCreated) values (...,...,getdate()) 
1 голос
/ 28 марта 2011

Не видя ваш .aspx-код, трудно сказать наверняка, но ItemName не был включен в приведенный вами пример кода.Похоже, ваш синтаксис привязки данных может быть неправильным, поэтому значение в текстовом поле на вашей странице неправильно отображается на параметр в вашей команде вставки.

Кроме того, что вы, вероятно, хотите сделать вместоскрытые элементы управления текстовым полем связаны с событием Inserting в вашем источнике данных.В этом примере предполагается, что вы используете элемент управления SqlDataSource, поэтому измените его в соответствии с вашим конкретным источником данных:

private void On_Inserting(Object sender, SqlDataSourceCommandEventArgs e)
{
    e.Command.Parameters.Add(new SqlParameter("ItemDateAddedTextBox", DateTime.Now.ToString("MMMM dd, yyyy")));
    ...
}

Этот обработчик добавляется в определение источника данных на странице .aspx.В представлении дизайна вашей веб-страницы нажмите на источник данных и в окне свойств перейдите на вкладку События.Если дважды щелкнуть событие Inserting, оно должно создать для вас обработчик в вашем коде, и вы просто заполните свою реализацию.

...