Hi SAL,
I've received your email and performed some tests on the page you
provided.
It seems you have many different code logic on the GridView+ ODataSource
editing/updating. I haven't looked deep into the database layer and after
some testing at the page/gridview layer, I found the following problems:
1. You have added some button and textbox in the GridView's Footer(of some
template fields) so as for inserting some records. However, since the
Textbox in insert template has requiredFieldValidator associated, when you
try editing/updating and submit update, the validation of the Insert
textbox will prevent it from postback the page. To address the problem, I
have used the following means:
#for TextBox, Validator and button in FooterTemplate, I set a separate
"ValidationGroup" for them so that they'll not affect the edit/update of
Gridview
==========
<asp:TextBox ID="txtDbsId"
..................ValidationGroup="Insert_Group"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1".....................
ValidationGroup="Insert_Group">*</asp:RequiredFieldValidator>
<asp:Button ID="btnAdd" runat="server" Text="Add" CommandName="Insert"
EnableViewState="False"
ValidationGroup="Insert_Group" />
============================
After that, the page can be submit correctly when we hit "update" button in
edit mode.
2. When the page postback to server-side, the Server-side validation
function will also query database to validate some input values. I'm not
sure the actual database schema and code logic, but you also need to check
this since if this fails, the updating event will not be reached.
3. You have registered the "RowUpdating" event, however, you've also add
the following code in "Rowcommand" event:
+===========
'ElseIf e.CommandName = "Update" AndAlso Page.IsValid Then
' dsGISLayers.Update()
'End If
===================
If you want to manually do the updating, you only need the "RowUpdating"
event and you can get all the parameters from the parameters collection and
do your own ADO.NET code, after that call e.Cancel=True so as to prevent
the built-in updating code logic:
====================
Protected Sub gvGISLayerEdit_RowUpdating(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles
gvGISLayerEdit.RowUpdating
Response.Write("<br/>gvGISLayerEdit_RowUpdating")
'get parameters from e.NewValues , e.OldValues, e.RowIndex
' and all TableAdapter to update
e.Cancel = True
End Sub
===================
Simply call ObjectDataSource.Update will not take effect since you haven't
registered its "Updating" event and supply the necessary parameters for
it.
BTW, for ASP.NET data accesing, you can refer to some good examples and
tutorial from the following site:
http://www.asp.net/learn/data-access/
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#noti f
ications.
==================================================
This posting is provided "AS IS" with no warranties, and confers no
rights.