niclake
niclake

Reputation: 134

Entering each row of datagrid into SQL database

I'm attempting to take a column from each row of my datagrid and enter it into an SQL database. Having all sorts of problems/errors making it work.

This is the most current version:

For i = 0 to agentGridView.Rows.Count - 1
    varAgt = agentGridView.Rows(i).Cells(1).Text

    strSQL = "INSERT INTO tblAgentVisitAgents (VisitID, AgtID)" & _
        " Values (" & _
        VisitID.Text & "," & _
        varAgt & ")"
    strSQL = Utils.replaceChars(strSQL)
    DAL.ExecNonQuery(strSQL, CommandType.Text)
Next

EDIT: The issue is that my cell(1) is a hidden field. When I make it visible, the entry form works. When it's hidden, it won't enter anything and thus gives me a syntax error. Is there a way I can use a hidden field for entry purposes?

Upvotes: 0

Views: 70

Answers (2)

niclake
niclake

Reputation: 134

Here's what I went with:

Front:

<asp:GridView ID="agentGridView" DataKeyNames="agentName,agentValue" ... />

Back:

For i = 0 to agentGridView.Rows.Count - 1
    varAgt = agentGridView.DataKeys(i).Values("agentValue").ToString

    strSQL = "INSERT INTO tblAgentVisitAgents (VisitID, AgtID)" & _
        " Values (" & _
        VisitID.Text & "," & _
        varAgt & ")"
    strSQL = Utils.replaceChars(strSQL)
    DAL.ExecNonQuery(strSQL, CommandType.Text)
Next

Source (for C#): Hide BoundField's but still be able to get values with C#

Upvotes: 0

Arindam Nayak
Arindam Nayak

Reputation: 7472

You need to use Text instead of Value . Like following.

varAgt = agentGridView.Rows(i).Cells(1).Text instead of varAgt = agentGridView.Rows(i).Cells(1).Value

But if you have that control in a Label, then you need to typecast to label and then use Text. E.g.

varAgt = CType(agentGridView.Rows(i).Cells(1).FindControl("controlID"),Label).Text -- replace controllID with required label id.

Source - http://www.aspsnippets.com/Articles/How-to-get-Selected-Row-cell-value-from-GridView-in-ASPNet.aspx

Upvotes: 1

Related Questions