Hi all, I am having unusual behavior for my radgrid. I update in code-behind using OnUpdateCommand and when I submit the change for that row, it changes ALL rows as if it's looping through all rows and updating all with the change!!
Here is my radgrid code
And here is the codebehind:
Here is my radgrid code
<
telerik:RadGrid
ID
=
"VendProdGrid"
GridLines
=
"None"
runat
=
"server"
AllowAutomaticDeletes
=
"True"
AllowAutomaticInserts
=
"False"
AllowAutomaticUpdates
=
"False"
PageSize
=
"10"
AllowPaging
=
"True"
AutoGenerateColumns
=
"False"
DataSourceID
=
"VendProdGridSource"
OnItemUpdated
=
"VendProdGrid_ItemUpdated"
OnItemDeleted
=
"VendProdGrid_ItemDeleted"
OnItemInserted
=
"VendProdGrid1_ItemInserted"
OnItemCommand
=
"VendProdGrid_ItemCommand"
OnUpdateCommand
=
"VendProdGrid_Update"
OnDataBound
=
"VendProdGrid_DataBound"
EnableEmbeddedScripts
=
"false"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
Width
=
"100%"
CommandItemDisplay
=
"TopAndBottom"
DataKeyNames
=
"VProductID"
DataSourceID
=
"VendProdGridSource"
HorizontalAlign
=
"NotSet"
AutoGenerateColumns
=
"False"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
/>
<
telerik:GridTemplateColumn
UniqueName
=
"TemplateColumn"
>
<
HeaderTemplate
>
<
strong
>Product Type</
strong
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
strong
><%# DataBinder.Eval(Container.DataItem, "VProductType")%></
strong
><
br
/>
<
em
><%# DataBinder.Eval(Container.DataItem, "VProductDescription")%></
em
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"SupplierName"
HeaderText
=
"Supplier"
SortExpression
=
"SupplierName"
UniqueName
=
"SupplierName"
></
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
CommandName
=
"Delete"
ButtonType
=
"ImageButton"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
EditColumn
UniqueName
=
"EditCommandColumn1"
>
</
EditColumn
>
<
FormTemplate
>
<
table
cellspacing
=
"2"
cellpadding
=
"1"
width
=
"100%"
border
=
"0"
>
<
tr
>
<
td
>Supplier:</
td
>
<
td
>
<
telerik:RadComboBox
ID
=
"SupplierCB"
runat
=
"server"
DropDownWidth
=
"300"
DataSourceID
=
"SQLSupplierSource"
DataValueField
=
"SupplierID"
DataTextField
=
"SupplierName"
AppendDataBoundItems
=
"false"
EnableLoadOnDemand
=
"false"
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Product Type:
</
td
>
<
td
>
<
telerik:RadComboBox
ID
=
"VProductTypeCB"
runat
=
"server"
DropDownWidth
=
"300"
DataSourceID
=
"SQLVendorProductTypeList"
DataValueField
=
"VProductTypeID"
DataTextField
=
"VProductType"
AppendDataBoundItems
=
"false"
EnableLoadOnDemand
=
"false"
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Description:</
td
>
<
td
>
<
asp:textbox
runat
=
"server"
id
=
"VProductDescriptionEdit"
causesvalidation
=
"False"
textmode
=
"MultiLine"
width
=
"300px"
uniqueid
=
"VProductDescriptionEdit"
rows
=
"5"
text='<%# DataBinder.Eval(Container.DataItem, "VProductDescription") %>'
></
asp:textbox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Limitations:</
td
>
<
td
>
<
asp:textbox
runat
=
"server"
id
=
"VProductLimitationsEdit"
CausesValidation
=
"False"
TextMode
=
"MultiLine"
Width
=
"300px"
UniqueID
=
"VProductLimitationsEdit"
Rows
=
"5"
Text='<%# DataBinder.Eval(Container.DataItem, "VProductLimitations") %>'
></
asp:textbox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Reference Standards:</
td
>
<
td
>
<
asp:textbox
runat
=
"server"
id
=
"VRefStandardEdit"
CausesValidation
=
"False"
TextMode
=
"MultiLine"
Width
=
"300px"
UniqueID
=
"VRefStandardEdit"
Rows
=
"5"
Text='<%# DataBinder.Eval(Container.DataItem, "VRefStandard") %>'
></
asp:textbox
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'></
asp:Button
>
<
asp:Button
ID
=
"Button2"
runat
=
"server"
Text
=
"Cancel"
CausesValidation
=
"false"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
And here is the codebehind:
protected
void
VendProdGrid_Update(
object
source, GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.UpdateCommandName)
{
if
(e.Item
is
GridEditFormItem)
{
GridEditFormItem item = (GridEditFormItem)e.Item;
int
id = Convert.ToInt32(item.GetDataKeyValue(
"VProductID"
));
if
(id != 0)
{
RadComboBox SupplierCB = item.FindControl(
"SupplierCB"
)
as
RadComboBox;
RadComboBox VProductTypeID = item.FindControl(
"VProductTypeCB"
)
as
RadComboBox;
TextBox VProductDescription = item.FindControl(
"VProductDescriptionEdit"
)
as
TextBox;
TextBox VProductLimitations = item.FindControl(
"VProductLimitationsEdit"
)
as
TextBox;
TextBox VRefStandard = item.FindControl(
"VRefStandardEdit"
)
as
TextBox;
try
{
VendProdGridSource.UpdateParameters.Add(
"SupplierID"
, TypeCode.Int32, SupplierCB.SelectedValue.ToString());
VendProdGridSource.UpdateParameters.Add(
"VProductTypeID"
, TypeCode.Int32, VProductTypeID.SelectedValue.ToString());
VendProdGridSource.UpdateParameters.Add(
"VProductDescription"
, TypeCode.String, VProductDescription.Text);
VendProdGridSource.UpdateParameters.Add(
"VProductLimitations"
, TypeCode.String, VProductLimitations.Text);
VendProdGridSource.UpdateParameters.Add(
"VRefStandard"
, TypeCode.String, VRefStandard.Text);
VendProdGridSource.Update();
//
//e.KeepInEditMode = false;
//e.ExceptionHandled = true;
SetMessage(
"New Product Type "
+ id +
" is updated!"
);
}
catch
(Exception ex)
{
// e.ExceptionHandled = true;
SetMessage(
"Product Type "
+ id +
" cannot be updated. Reason: "
+ ex.Message);
}
// e.Canceled = true;
VendProdGrid.Rebind();
}
}
}
}