Hi All,
I'm currently facing a very frustating and untraceable bug with my Telerik web app as the web controls did not show any exceptions at all. I am able to insert and delete the records on the grid but CANNOT EDIT them. I hope someone can shed some light into my problem. here's the code that I am using...
ASPX
C# Code Behind
I'm currently facing a very frustating and untraceable bug with my Telerik web app as the web controls did not show any exceptions at all. I am able to insert and delete the records on the grid but CANNOT EDIT them. I hope someone can shed some light into my problem. here's the code that I am using...
ASPX
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
GridLines
=
"None"
AutoGenerateColumns
=
"false"
PageSize
=
"10"
AllowPaging
=
"true"
AllowSorting
=
"true"
runat
=
"server"
DataSourceID
=
"MasterViewDataSource"
OnItemDataBound
=
"OnItemDataBoundHandler"
AllowAutomaticInserts
=
"True"
AllowAutomaticUpdates
=
"true"
AllowAutomaticDeletes
=
"true"
ShowStatusBar
=
"true"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
ShowFooter
=
"false"
DataKeyNames
=
"TrxId"
EditMode
=
"InPlace"
CommandItemDisplay
=
"TopAndBottom"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"TrxId"
HeaderText
=
"Trx No."
ReadOnly
=
"true"
/>
<
telerik:GridTemplateColumn
HeaderText
=
"Job Type"
ItemStyle-Width
=
"240px"
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "TypeName")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox2"
DataTextField
=
"TypeName"
DataValueField
=
"TypeId"
DataSourceID
=
"CategoriesDataSource"
SelectedValue='<%#Bind("TypeId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"ObjId"
HeaderText
=
"Container No."
SortExpression
=
"ObjSN"
>
<
FooterTemplate
>Template footer</
FooterTemplate
>
<
FooterStyle
VerticalAlign
=
"Middle"
HorizontalAlign
=
"Center"
/>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "ObjSN")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox1"
EnableLoadOnDemand
=
"True"
DataTextField
=
"ObjSN"
OnItemsRequested
=
"RadComboBox1_ItemsRequested"
OnSelectedIndexChanged
=
"RadComboBox1_SelectedIndexChanged"
DataValueField
=
"ObjId"
AutoPostBack
=
"true"
HighlightTemplatedItems
=
"true"
Height
=
"140px"
Width
=
"220px"
DropDownWidth
=
"300px"
>
<
HeaderTemplate
>
<
ul
>
<
li
class
=
"col1"
>Container No.</
li
>
<
li
class
=
"col2"
>Container Type</
li
>
</
ul
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
ul
>
<
li
class
=
"col1"
>
<%# DataBinder.Eval(Container, "Text")%>
</
li
>
<
li
class
=
"col2"
>
<%# DataBinder.Eval(Container, "Attributes['ObjType']")%>
</
li
>
</
ul
>
</
ItemTemplate
>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"STCPO"
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "StateName")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox3"
DataTextField
=
"StateName"
DataValueField
=
"StateId"
DataSourceID
=
"LoadStatesDataSource"
SelectedValue='<%#Bind("StateId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Voy. No."
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "VoyName")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox4"
DataTextField
=
"VoyName"
DataValueField
=
"VoyId"
DataSourceID
=
"VoyagesDataSource"
SelectedValue='<%#Bind("VoyId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Shipper"
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "Shipr")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox5"
DataTextField
=
"Shipr"
MinFilterLength
=
"4"
OnItemsRequested
=
"RadComboBox5_ItemsRequested"
EnableLoadOnDemand
=
"true"
DataValueField
=
"ShipprId"
OnSelectedIndexChanged
=
"RadComboBox5_SelectedIndexChanged"
SelectedValue='<%#Bind("ShiprId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Consignee"
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "Cons")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox6"
DataTextField
=
"Cons"
OnItemsRequested
=
"RadComboBox6_ItemsRequested"
EnableLoadOnDemand
=
"true"
DataValueField
=
"ConsId"
OnSelectedIndexChanged
=
"RadComboBox6_SelectedIndexChanged"
SelectedValue='<%#Bind("ConsId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"TrxWeight"
HeaderText
=
"GWT"
UniqueName
=
"TrxWeight"
/>
<
telerik:GridBoundColumn
DataField
=
"TrxSeal"
HeaderText
=
"Seal No."
UniqueName
=
"TrxSeal"
/>
<
telerik:GridBoundColumn
DataField
=
"TrxRemarks"
HeaderText
=
"Remarks"
UniqueName
=
"TrxRemarks"
/>
<
telerik:GridTemplateColumn
HeaderText
=
"Bill To"
>
<
ItemTemplate
>
<%#DataBinder.Eval(Container.DataItem, "BillCompany")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox7"
DataTextField
=
"BillCompany"
DataValueField
=
"BillId"
DataSourceID
=
"BillingDataSource"
SelectedValue='<%#Bind("BillId") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridEditCommandColumn
FooterText
=
"EditCommand footer"
UniqueName
=
"EditCommandColumn"
HeaderText
=
"Edit"
HeaderStyle-Width
=
"100px"
UpdateText
=
"Update"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridClientDeleteColumn
ConfirmTextFields
=
"TrxId"
ConfirmTextFormatString
=
"Are you sure you want to delete transaction No. {0:0000}?"
HeaderStyle-Width
=
"35px"
ButtonType
=
"ImageButton"
ImageUrl
=
"Delete.gif"
>
</
telerik:GridClientDeleteColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"MasterViewDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ZEUS %>"
SelectCommand="SELECT TransactsData.TrxId, TransactsData.TypeId, TransactsData.StateId, TransactsData.ObjId, TransactsData.VoyId,
TransactsData.BillId, TransactsData.TrxWeight, TransactsData.TrxSeal, TransactsData.ShiprId, TransactsData.ConsId,
a1.CustName AS Shipr, a2.CustName AS Cons, ObjectsData.ObjSN, ObjectsData.ObjType,
WorkTypes.TypeName, BillingData.BillCompany, LoadStates.StateName, VoysData.VoyName, VoysData.VoyDate
FROM TransactsData INNER JOIN
Customers AS a1 ON a1.CustId = TransactsData.ShiprId INNER JOIN
Customers AS a2 ON a2.CustId = TransactsData.ConsId INNER JOIN
BillingData ON TransactsData.BillId = BillingData.BillId INNER JOIN
WorkTypes ON TransactsData.TypeId = WorkTypes.TypeId INNER JOIN
ObjectsData ON TransactsData.ObjId = ObjectsData.ObjId INNER JOIN
LoadStates ON TransactsData.StateId = LoadStates.StateId INNER JOIN
VoysData ON TransactsData.VoyId = VoysData.VoyId"
InsertCommand="INSERT INTO [TransactsData] ([TypeId], [StateId], [ObjId], [VoyId], [ShiprId], [ConsId], [TrxWeight], [TrxSeal],
[TrxRemarks], [BillId], [TimeCreated])
VALUES (@TypeId, @StateId, @ObjId, @VoyId, @ShiprId, @ConsId, @TrxWeight, @TrxSeal, @TrxRemarks, @BillId, GETDATE())"
UpdateCommand="UPDATE [TransactsData] SET [TypeId] = @TypeId, [StateId] = @StateId, [ObjId] = @ObjId,
[VoyId] = @VoyId, [ShiprId] = @ShiprId, [ConsId] = @ConsId, [TrxWeight] = @TrxWeight,
[TrxSeal] = @TrxSeal, [TrxRemarks] = @TrxRemarks, [BillId] = @BillId, [TimeUpdated] = GETDATE()
WHERE [TrxId] = @TrxId"
DeleteCommand="DELETE FROM [TransactsData] WHERE [TrxId] = @TrxId">
<
InsertParameters
>
<
asp:Parameter
Name
=
"TrxId"
Type
=
"Int64"
/>
<
asp:SessionParameter
SessionField
=
"ObjId"
Name
=
"ObjId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"TypeId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"StateId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"VoyId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"ShiprId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"ConsId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"TrxWeight"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"TrxSeal"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"TrxRemarks"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"BillId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"TimeCreated"
Type
=
"DateTime"
/>
</
InsertParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
=
"TrxId"
Type
=
"Int64"
/>
<
asp:SessionParameter
SessionField
=
"ObjId"
Name
=
"ObjId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"TypeId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"StateId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"VoyId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"ShiprId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"ConsId"
Type
=
"Int64"
/>
<
asp:Parameter
Name
=
"TrxWeight"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"TrxSeal"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"TrxRemarks"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"BillId"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"TimeUpdated"
Type
=
"DateTime"
/>
</
UpdateParameters
>
<
DeleteParameters
>
<
asp:Parameter
Name
=
"TrxId"
Type
=
"Int64"
/>
</
DeleteParameters
>
</
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"CategoriesDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ZEUS %>"
SelectCommand="SELECT [TypeId], [TypeName] FROM [WorkTypes]"></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"LoadStatesDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ZEUS %>"
SelectCommand="SELECT [StateId], [StateName] FROM [LoadStates]"></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"VoyagesDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ZEUS %>"
SelectCommand="SELECT [VoyId], [VoyName] FROM [VoysData]"></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"BillingDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ZEUS %>"
SelectCommand="SELECT [BillId], [BillCompany] FROM [BillingData]"></
asp:SqlDataSource
>
</
asp:Content
>
C# Code Behind
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Configuration;
using
System.Data;
using
System.Data.SqlClient;
using
Telerik.Web.UI;
namespace
TMSv2
{
public
partial
class
TestBed : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
//GridEvents
protected
void
OnItemDataBoundHandler(
object
sender, GridItemEventArgs e)
{
if
(e.Item.IsInEditMode)
{
GridEditableItem item = (GridEditableItem)e.Item;
if
(!(e.Item
is
IGridInsertItem))
{
RadComboBox combo = (RadComboBox)item.FindControl(
"RadComboBox1"
);
RadComboBoxItem selectedItem =
new
RadComboBoxItem();
selectedItem.Text = ((DataRowView)e.Item.DataItem)[
"ObjSN"
].ToString();
selectedItem.Value = ((DataRowView)e.Item.DataItem)[
"ObjId"
].ToString();
selectedItem.Attributes.Add(
"ObjType"
, ((DataRowView)e.Item.DataItem)[
"ObjType"
].ToString());
combo.Items.Add(selectedItem);
selectedItem.DataBind();
Session[
"ObjId"
] = selectedItem.Value;
}
}
}
// ComboboxEvents
protected
void
RadComboBox1_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
string
sql =
"SELECT [ObjId], [ObjSN], [ObjType], [ObjOID] FROM [ObjectsData] WHERE ObjSN LIKE @ObjSN + '%'"
;
SqlDataAdapter adapter =
new
SqlDataAdapter(sql,
ConfigurationManager.ConnectionStrings[
"ZEUS"
].ConnectionString);
adapter.SelectCommand.Parameters.AddWithValue(
"@ObjSN"
, e.Text);
DataTable dt =
new
DataTable();
adapter.Fill(dt);
RadComboBox comboBox = (RadComboBox)sender;
comboBox.Items.Clear();
foreach
(DataRow row
in
dt.Rows)
{
RadComboBoxItem item =
new
RadComboBoxItem();
item.Text = row[
"ObjSN"
].ToString();
item.Value = row[
"ObjId"
].ToString();
item.Attributes.Add(
"ObjType"
, row[
"ObjType"
].ToString());
comboBox.Items.Add(item);
item.DataBind();
}
}
protected
void
RadComboBox1_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
Session[
"ObjId"
] = e.Value;
}
protected
void
RadComboBox5_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
string
sql =
"SELECT [CustId], [CustName] FROM [Customers] WHERE CustName LIKE @CustName + '%'"
;
var con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"ZEUS"
].ConnectionString);
var cmd =
new
SqlCommand(sql, con);
var reader =
default
(SqlDataReader);
cmd.Parameters.AddWithValue(
"@CustName"
, e.Text);
try
{
con.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
var obj =
default
(
object
);
RadComboBox comboBox = (RadComboBox)sender;
while
(reader.Read())
{
obj = reader[
"CustId"
];
var id = obj == DBNull.Value ? 0 : Convert.ToInt64(obj);
obj = reader[
"CustName"
];
var name = obj == DBNull.Value ?
string
.Empty : Convert.ToString(obj);
RadComboBoxItem item =
new
RadComboBoxItem();
item.Text = name;
item.Value = id.ToString();
comboBox.Items.Add(item);
}
}
finally
{
if
(reader !=
null
&& !reader.IsClosed) reader.Close();
if
(con !=
null
&& con.State == ConnectionState.Open) con.Close();
}
}
protected
void
RadComboBox5_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
Session[
"CustId"
] = e.Value;
}
protected
void
RadComboBox6_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
string
sql =
"SELECT [CustId], [CustName] FROM [Customers] WHERE CustName LIKE @CustName + '%'"
;
var con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"ZEUS"
].ConnectionString);
var cmd =
new
SqlCommand(sql, con);
var reader =
default
(SqlDataReader);
cmd.Parameters.AddWithValue(
"@CustName"
, e.Text);
try
{
con.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
var obj =
default
(
object
);
RadComboBox comboBox = (RadComboBox)sender;
while
(reader.Read())
{
obj = reader[
"CustId"
];
var id = obj == DBNull.Value ? 0 : Convert.ToInt64(obj);
obj = reader[
"CustName"
];
var name = obj == DBNull.Value ?
string
.Empty : Convert.ToString(obj);
RadComboBoxItem item =
new
RadComboBoxItem();
item.Text = name;
item.Value = id.ToString();
comboBox.Items.Add(item);
}
}
finally
{
if
(reader !=
null
&& !reader.IsClosed) reader.Close();
if
(con !=
null
&& con.State == ConnectionState.Open) con.Close();
}
}
protected
void
RadComboBox6_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
Session[
"CustId"
] = e.Value;
}
}
}