date grid update

Hi experts, I am trying to update a datagrind with this code.

the update statement works.

when i had code it

example
//updateCommand.CommandText = "Update DestinationElements set Deduction = 'E' where EmployerId = '136728'";

but it does not update  with the normal code

updateCommand.CommandText = "Update DestinationElements set Deduction = @Deduction where EmployerId = @EmployerId";

also could it be because of this

string employerId = e.Item.Cells[0].Text;

where by employerId = e.Item.Cells[0].Text has no text control in my grid.

what can i do thanks


public void dgCompensation_Update(Object Sender, DataGridCommandEventArgs e)
            {
   
                  string employerId = e.Item.Cells[0].Text;
                  string deduction = ((DropDownList)(e.Item.FindControl("DeductDropDownList"))).SelectedItem.Value;

                  Response.Write(deduction);
            
                  string ConnectionString = ConfigurationSettings.AppSettings["connectLocal"];
                  SqlConnection  myConnection = new SqlConnection(ConnectionString);
                  
                  
                  SqlCommand updateCommand = new SqlCommand();

                  updateCommand.Connection = myConnection;
                 //updateCommand.CommandText = "Update DestinationElements set Deduction = 'E' where EmployerId = '136728'";
            
                    updateCommand.CommandText = "Update DestinationElements set Deduction = @Deduction where EmployerId = @EmployerId";
            
                     updateCommand.Parameters.Add("@EmployerId", SqlDbType.NVarChar, 50).Value = employerId;
                              updateCommand.Parameters.Add("@Deduction", SqlDbType.Char,5).Value = deduction;
               
                  try
                  {
                        myConnection.Open();
                        updateCommand.ExecuteNonQuery();
                      }
   
                  catch (SqlException SqlEx)
                  {
                        lblStatus.Text = SqlEx.Message.ToString();
                  }
   
                  catch (Exception ex)
                  {
                        lblStatus.Text = ex.Message.ToString();
                  }
   
                  finally
                  {
                        myConnection.Close();
                  }
   
                  dgCompensation.EditItemIndex = -1;
                  BindGrid();
   
            }
            
SirReadAlotAsked:
Who is Participating?
 
dstanley9Commented:
Are you getting an exception, or is it just not updating?  You could look at the activity in SQL Profiler and see what command is being executed, check the parameter values, etc.  Your SQL and parameter syntax looks OK.
You might also try calling Trim() on the string to make sure there are no excess spaces.
0
 
t_itaniumCommented:
hi

first of all there is no point to use parameters if you are not using stored procedures...you use the variables directly into your query

example
"Update DestinationElements set Deduction = '" + deduction + "' where EmployerId = '" + employerId + "'";

then make sure that the types of these variables are the same as used in your database..... i mean if you are using varchar for a variable in the database..you have to use string in the code.. if int you have to use int and not string..

second trace your code using breakpoints and f11 to see where the code is stopping and executing.....also as you said the value of e.Item.Cells[0].Text;
is making the error
0
 
SirReadAlotAuthor Commented:
second trace your code using breakpoints and f11 to see where the code is stopping and executing.....also as you said the value of e.Item.Cells[0].Text;
is making the error


NOT ERRORING

but i remove the @parameters
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
SirReadAlotAuthor Commented:
what shoul i do with these

@ parameters
updateCommand.Parameters.Add("@EmployerId", SqlDbType.NVarChar, 50).Value = employerId;
                  updateCommand.Parameters.Add("@Deduction", SqlDbType.Char,5).Value = deduction;
0
 
SirReadAlotAuthor Commented:
i have tried everything and still no joy
0
 
dstanley9Commented:
Actually, parameters are a good idea because they prevent SQL injection attacks.  That is not your core problem here.

What is the name of the control that you are trying to get the value from?  For example, if it is a label I would use:

Label l = e.Item.FindControl("{labelname}") as Label;
string employerId = l.Text;


0
 
SirReadAlotAuthor Commented:
this is what i have

   string deduction = ((DropDownList)(e.Item.FindControl("DeductDropDownList"))).SelectedItem.Value;
0
 
dstanley9Commented:
What about the EmployerID?  What type of control is used to display it?  
0
 
SirReadAlotAuthor Commented:
none actually


what can i do
0
 
SirReadAlotAuthor Commented:
please see original post
0
 
dstanley9Commented:
It needs to be displayed in a server-side control if you want to access it from code-behind.  Text displayed via direct script code (<% %> blocks) will not be accessible from server-side code.
0
 
SirReadAlotAuthor Commented:
like this

i set emploper col to false

<Columns>
                                                                  <asp:BoundColumn DataField="EmployerId" HeaderText="Employer ID" ReadOnly="True" HeaderStyle-Font-Bold="True" Visible="False" />
                                                                  <asp:BoundColumn DataField="DestinationElement" HeaderText="Description" ReadOnly="True" HeaderStyle-Font-Bold="True" />
                                                                  <asp:TemplateColumn HeaderText="Deductions" HeaderStyle-Font-Bold="True">
                                                                        <ItemTemplate>
                                                                              <asp:Label id="lblDeduct" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Deduction") %>'/>
                                                                        </ItemTemplate>
                                                                        <EditItemTemplate>
                                                                              <asp:DropDownList id="DeductDropDownList" Runat="Server" DataSource="<%# GetDeductionDataTable() %>" DataTextField="Deduction" DataValueField="Deduction" />
                                                                        </EditItemTemplate>
                                                                  </asp:TemplateColumn>
                                                                  <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="save" ItemStyle-Width="50" ButtonType="LinkButton" />
                                                            </Columns>
0
 
dstanley9Commented:
What does "e.Item.Cells[0].Text " show in the debugger?  What is the count of e.Item.Cells[0]? (should be 4) I ran a quick test with your code and e.Item.Cells[0].Text showed a value.  
0
 
SirReadAlotAuthor Commented:
SORRY,

I WAS JUST looking at the database
updateCommand.CommandText = "Update DestinationElements set @DestinationElement = @DestinationElement , @Deduction = @Deduction  where EmployerId = @EmployerId and DestinationElements  = @DestinationElements";
                  
0
 
SirReadAlotAuthor Commented:
the value is

1345678

thats the emp id
0
 
SirReadAlotAuthor Commented:
yeah,  it was a trim problem
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.