datagrid update command

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

i wrote a code to update datagrid with the datagrid updatecommand but i cant get the updated values after being update
that is the code

private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
TextBox temp
temp=(TextBox)e.Item.Cells[0].Controls[0]
String str=temp.Text;

str always returnt the old value of the cell (before being updated)
would u plz tell me about whats wrong i m doin
thnx alo
 
After the update, query the data from the data source by appending a select
SQL statement to the end of your update code or run a stored procedure that
pulls the fresh data down again.


Your code below doesn't show how you are actually updating the data, just
how you are getting the changed data from the input.


abdoly said:
i wrote a code to update datagrid with the datagrid updatecommand but i
cant get the updated values after being updated
that is the code

private void DataGrid1_UpdateCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e){
TextBox temp;
temp=(TextBox)e.Item.Cells[0].Controls[0];
String str=temp.Text;
}
str always returnt the old value of the cell (before being updated)
would u plz tell me about whats wrong i m doing
thnx alot
 
----- Scott M. wrote: ----

After the update, query the data from the data source by appending a selec
SQL statement to the end of your update code or run a stored procedure tha
pulls the fresh data down again


Your code below doesn't show how you are actually updating the data, jus
how you are getting the changed data from the input


abdoly said:
i wrote a code to update datagrid with the datagrid updatecommand but
cant get the updated values after being update
that is the cod
System.Web.UI.WebControls.DataGridCommandEventArgs e)
TextBox temp
temp=(TextBox)e.Item.Cells[0].Controls[0]
String str=temp.Text

str always returnt the old value of the cell (before being updated
would u plz tell me about whats wrong i m doin
thnx alo


thanks for ur care , but my problem is that i need to get the new value wrote in the datagrid text to update the data source with it,whatever how i update the data, i just need to know how to fetch the new value even if i want to preview it on the for
thnk
 
Here is code that will grab the user inputted data and write it back to the
DataSet that the grid is bound to and rebind the grid. This is what you are
not doing. You must re-bind the grid to the changed dataset in order for
the grid to show the new contents.

Private Sub dg_UpdateCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dg.UpdateCommand

' "FindControl" will only accept the name of a control
Dim editObject As Object=
CType(e.Item.Cells(0).FindControl("ControlNameHere"), ControlTypeHere)
ds.Tables(0).Rows(e.Item.ItemIndex).Item("CustID") = edittext.Text

' Repeat the above steps for each column (and control in the grid)

'Get out of edit mode
dg.EditItemIndex = -1

'Update the DataGrid
dg.DataBind()
End Sub


abdoly said:
----- Scott M. wrote: -----

After the update, query the data from the data source by appending a select
SQL statement to the end of your update code or run a stored procedure that
pulls the fresh data down again.


Your code below doesn't show how you are actually updating the data, just
how you are getting the changed data from the input.


abdoly said:
i wrote a code to update datagrid with the datagrid updatecommand
but i
cant get the updated values after being updated
that is the code
System.Web.UI.WebControls.DataGridCommandEventArgs e){
TextBox temp;
temp=(TextBox)e.Item.Cells[0].Controls[0];
String str=temp.Text;
}
str always returnt the old value of the cell (before being updated)
would u plz tell me about whats wrong i m doing
thnx alot

thanks for ur care , but my problem is that i need to get the new
value wrote in the datagrid text to update the data source with it,whatever
how i update the data, i just need to know how to fetch the new value even
if i want to preview it on the form
 
abdoly said:
hi sir
my whole code to update is :
public void DataGrid1_UpdateCommand(object
source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
temp=(TextBox)e.Item.Cells[1].Controls[0];
String str=temp.Text;
this.TextBox1.Text=str;
editDr=this.dataSet11.Departments.Rows[e.Item.ItemIndex];
editDr.BeginEdit();
editDr["deptname"]=str;
editDr.EndEdit();
this.Cache["ds"]=this.dataSet11;
this.DataGrid1.EditItemIndex=-1;
this.DataGrid1.DataBind();
}
im using (TextBox) casting because another problem wich is using CType
always cause error says that CType is not defined inmy namespace, i tried to
find its base class but i couldnt
any way my problem is str always the old value before user update,i think
that has nothing to do with updating the dataset
because in all cases i will update it with the old value again

I don't see where you updated the database, only the in-memory dataset. Have
you confirmed what the value of "str" is immediately after it is set?

Also, CType didn't work because it's a VB.NET thing. You are correct to use
(TextBox) in C#.
 
----- John Saunders wrote: -----

abdoly said:
hi sir
my whole code to update is :
public void DataGrid1_UpdateCommand(object
source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
temp=(TextBox)e.Item.Cells[1].Controls[0];
String str=temp.Text;
this.TextBox1.Text=str;
editDr=this.dataSet11.Departments.Rows[e.Item.ItemIndex];
editDr.BeginEdit();
editDr["deptname"]=str;
editDr.EndEdit();
this.Cache["ds"]=this.dataSet11;
this.DataGrid1.EditItemIndex=-1;
this.DataGrid1.DataBind();
}
im using (TextBox) casting because another problem wich is using CType
always cause error says that CType is not defined inmy namespace, i tried to
find its base class but i couldnt
any way my problem is str always the old value before user update,i think
that has nothing to do with updating the dataset
because in all cases i will update it with the old value again

I don't see where you updated the database, only the in-memory dataset. Have
you confirmed what the value of "str" is immediately after it is set?

Also, CType didn't work because it's a VB.NET thing. You are correct to use
(TextBox) in C#.
--
John Saunders
johnwsaundersiii at hotmail

i m sure that there is misunderstanding here
how can i update the database or the dataset without knowing the value to update with
first i need to know the new value to update my dataset
look,i press the edit link in the datagrid , a textbox contains the value i want to update appears in the cell
then i have to write the new value in the textbox then press update link
in the update event i m supposed to get the value wrote in the datagrid text box and update the dataset with it
my problem is i dont know how to get this value,
another thing, suppose that i dont want to update that value to the database i just want to display it in a label on the web
form, how can i get it to display it
sorry about my week english and ur time
 
abdullah said:
----- John Saunders wrote: -----

abdoly said:
hi sir
my whole code to update is :
public void DataGrid1_UpdateCommand(object
source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
temp=(TextBox)e.Item.Cells[1].Controls[0];
String str=temp.Text;
this.TextBox1.Text=str;
editDr=this.dataSet11.Departments.Rows[e.Item.ItemIndex];
editDr.BeginEdit();
editDr["deptname"]=str;
editDr.EndEdit();
this.Cache["ds"]=this.dataSet11;
this.DataGrid1.EditItemIndex=-1;
this.DataGrid1.DataBind();
}
im using (TextBox) casting because another problem wich is using
CType
always cause error says that CType is not defined inmy namespace, i tried to
find its base class but i couldnt
any way my problem is str always the old value before user update,i
think
that has nothing to do with updating the dataset
because in all cases i will update it with the old value again

I don't see where you updated the database, only the in-memory dataset. Have
you confirmed what the value of "str" is immediately after it is set?

Also, CType didn't work because it's a VB.NET thing. You are correct to use
(TextBox) in C#.
--
John Saunders
johnwsaundersiii at hotmail

i m sure that there is misunderstanding here
how can i update the database or the dataset without knowing the value to update with
first i need to know the new value to update my dataset
look,i press the edit link in the datagrid , a textbox contains the value
i want to update appears in the cell
then i have to write the new value in the textbox then press update link
in the update event i m supposed to get the value wrote in the datagrid
text box and update the dataset with it
my problem is i dont know how to get this value,
another thing, suppose that i dont want to update that value to the
database i just want to display it in a label on the web
form, how can i get it to display it
sorry about my week english and ur time

What I meant is that, given the way you described the problem, it could be
the case that you thought you were updating the database, but no data
changed, or that you had looked at the value of "str" in the debugger and
seen that it hadn't changed. I noticed that the code you provided did not
update the database, so it could have been the first problem. You didn't say
how you had seen the value of "str", so it could have been the second
problem as well.
 
my problem is i dont know how to get this value

(Taken from my earlier post on this thread)

' "FindControl" will only accept the name of a control
Dim editObject As Object=
CType(e.Item.Cells(0).FindControl("ControlNameHere"), ControlTypeHere)
ds.Tables(0).Rows(e.Item.ItemIndex).Item("CustID") = edittext.Text

Note the FindControl method. This is how you "find the control" in the grid
that contains your new data.
 
abdoly said:
sir
how can i get textbox name to use findControl, the data grid is below

<asp:DataGrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 168px; POSITION: absolute; TOP:

104px" runat="server" Width="224px" Height="112px" DataSource="<%# dataSet11 %>"

DataMember="Departments"

AutoGenerateColumns="False"OnUpdateCommand="DataGrid1_UpdateCommand"><Column
s><asp:BoundColumn
DataField="deptid" SortExpression="deptid"
DataField="deptname"SortExpression="deptname"HeaderText="deptname"></asp:Bou
ndColumn><asp:EditCommandColumn
ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel"
EditText="Edit"> said:
Text="Delete"
CommandName="Delete"></asp:ButtonColumn></Columns></asp:DataGrid>

I would not use a BoundColumn. Instead, I'd use a TemplateColumn. That way,
you can name the text box explicitly.
 
abdoly said:
sir

according to ur reply i understood that
first: u believe that may be the value already changed but i cant see it for some reasons
i made 3 things to if know that right
-i display it on a textbox on the form b4 updating the dataset
this.textBox1.text=str;
but i always see the old value
-i updated the dataset with the str and i wrote the dataset to xml file
after updating it
this.dataSet11.WriteXml(@"d:\x\x.xml");
and i checked the file and the old value was there.
-i used the debugger to watch str and the same result here
second: i have to update the datasource with the dataset every time i need to update a

record, then why i use a dataset if i will go to the server every transaction
any way i tried to update the datasource as

this.sqlDataAdapter1.Update(this.dataSet11,"departments");
and the same result , no change in the old value

I strongly suggest that you simplify your scenario.
 
You need to create template columns that you can place your own controls
into. Then you can give the controls the ID's that you want.


abdoly said:
sir
how can i get textbox name to use findControl, the data grid is below

<asp:DataGrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 168px; POSITION: absolute; TOP:

104px" runat="server" Width="224px" Height="112px" DataSource="<%# dataSet11 %>"

DataMember="Departments"

AutoGenerateColumns="False"OnUpdateCommand="DataGrid1_UpdateCommand"><Column
s><asp:BoundColumn
DataField="deptid" SortExpression="deptid"
DataField="deptname"SortExpression="deptname"HeaderText="deptname"></asp:Bou
ndColumn><asp:EditCommandColumn
ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel"
 
si
i used the template columns and i used the findcontrol but the same resul
i will send u the project would u plz just take alook
 
hi ,


i m also facing with ur problem.. i want to update my database with
new value.. But i'm getting the old value only...

I simply tried to display the new value on to the form, but it is
showing the old value..

Tell me, how to solve this...

Sobin

(e-mail address removed)
 
Hi,,


i m also facing with the same problem..
i tried to update my datagrid with new values using the update
command.. but i m getting the old value only..

i don no how to resolve it..

plz help me..

(e-mail address removed)
 
Back
Top