2015-12-18 3 views
0

У меня есть веб-страница с сеткой. Я нажимаю кнопку редактирования и программно заполняю 2 поля: «Рецензия» (текущая дата) и пользователь (текущий пользователь). Когда я нажимаю кнопку обновления, данные в этих двух полях не сохраняются в таблице SQL.Невозможно сохранить отредактированные значения в asp.net gridview

<asp:TemplateField HeaderText="ReviewDate" SortExpression="ReviewDate" > 
<EditItemTemplate> 
<asp:TextBox ID="TextBox1" runat="server" dataformatstring="{0:d}" Text='<% # GetDate()%>'></asp:TextBox> 
</EditItemTemplate> 
<ItemTemplate> 
<asp:Label ID="Label1" runat="server" dataformatstring="{0:d}" Text='<%# Bind("ReviewDate")%>'></asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Reviewer" SortExpression="Reviewer"> 
<EditItemTemplate> 
<asp:TextBox ID="TextBox2" runat="server" Text='<%# GetUser)% '> 
</asp:TextBox> 
</EditItemTemplate> 
<ItemTemplate> 
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Reviewer") %>'></asp:Label> 
</ItemTemplate> 
<asp:TemplateField> 

Я попытался с помощью события RowDataBound без успеха

Private Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound 
If e.Row.RowType = DataControlRowType.DataRow Then 
    If e.Row.RowState = DataControlRowState.Edit Then 
     Dim txtreviewDate As TextBox = DirectCast(e.Row.FindControl("ReviewDate"), TextBox) 
     txtreviewDate.Text = GetDate() 
     Dim txtUser As TextBox = DirectCast(e.Row.FindControl("Reviewer"), TextBox) 
     txtUser.Text = GetUser() 
    End If 

End If End Sub }

Я также попытался использовать событие RowUpdating снова без успеха. На этот раз контроль не может быть найден (ошибка Null исключение.

Private Sub GridView1_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating 
Try 
Dim con As New SqlConnection(ConnectionString) 
Dim row As GridViewRow = DirectCast(GridView1.Rows(e.RowIndex), GridViewRow) 
Dim id As TextBox = DirectCast(row.FindControl("SMasterID"), TextBox) 'Int32.Parse(GridView1.DataKeys(e.RowIndex).Value.ToString()) 
Dim tdate As TextBox = DirectCast(row.FindControl("ReviewDate"), TextBox) 
Dim tname As TextBox = DirectCast(row.FindControl("Reviewer"), TextBox) 
Dim cmd As New SqlCommand("update SMasterCurrentYear set Reviewer= '" + @reviewer + "',ReviewDate= " + @ReviewDate+ " where SMasterID [email protected]", con) 
GridView1.EditIndex = -1 
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id 
cmd.Parameters.Add("@reviewer", SqlDbType.VarChar, 30).Value = tname.Text  cmd.Parameters.Add("@ReviewDate", SqlDbType.Date).Value = tdate.Text 
con.Open() 
cmd.ExecuteNonQuery() 
con.Close() 
bind() 
Catch ex As Exception 
    Throw New Exception(ex.Message) 
End Try 
End Sub 

Я не знаю, что делать в этой точке. Спасибо за вашу помощь.

ответ

0

Вы проверили Page.IsPostback на когда вы привязываете gridview?

Смежные вопросы