
guys, it's like something grew overnight on this grid and i just can't figure it out. hopefully ya'll might be able to point me in the right direction. any button on this grid (below) gets the error attached. (invalid postback or callback error). it's sad but this code has sat there for a while unchanged and was working just fine... and then the error (attached) just started. it only happens with the editCommand button or the asp:ImageButton and frankly i can put anykind of button and the "click event" - i assume is triggering this - even if there is no method attached to the button itself. everything else works just fine - menu items etc. has anyone seen this before or knows the cause of this?
thanks again for any help.
rik
<telerik:RadGrid ID="TruckLogItemsRadGrid" runat="server" AllowPaging="false" AutoGenerateColumns="false"
Skin="WebBlue" EnableTheming="false" AllowFilteringByColumn="false" OnItemDataBound="TruckLogItemsRadGrid_ItemDataBound"
OnNeedDataSource="TruckLogItemsRadGrid_NeedDataSource" Width="100%" ShowStatusBar="true"
OnDeleteCommand="TruckLogItemsRadGrid_DeleteCommand" OnUpdateCommand="TruckLogItemsRadGrid_UpdateCommand">
<GroupingSettings CaseSensitive="false" />
<MasterTableView EditMode="InPlace" DataKeyNames="TRUCKLOGITEMID,AVGLENGTH,MATERIALRANGEID,MATERIALTYPE,JOINTCOUNT,TALLYCOUNT,CREATEDDATE,CREATEDBY,LASTUPDATED,LASTUPDATEDBY,MATERIALTYPEID,MATERIALDESCRIPTION">
<HeaderStyle HorizontalAlign="Left" />
<Columns>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="50px" UniqueName="OptionsMenuCell"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="50px" ItemStyle-Wrap="false">
<ItemTemplate>
<asp:Image ID="RecordInfoImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/grid_info.gif"
CssClass="gridviewOptionsImage" />
<telerik:RadToolTip ID="InfoRadToolTip" runat="server" TargetControlID="RecordInfoImage"
Skin="Sunset" Position="MiddleRight" CssClass="gridviewToolTip" />
<asp:Image ID="PopupMenuImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/grid_menu_popup.gif"
CssClass="gridviewOptionsImage" />
<telerik:RadContextMenu ID="OptionsRadContextMenu" runat="server" Skin="WebBlue"
CssClass="leftText">
<Targets>
<telerik:ContextMenuControlTarget ControlID="PopupMenuImage" />
</Targets>
<Items>
<telerik:RadMenuItem Text="Import From Tally-Rite Device" ImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif" />
<telerik:RadMenuItem Text="Edit Tally Data" ImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif" />
</Items>
</telerik:RadContextMenu>
<asp:ImageButton ID="DeleteItem" runat="server" ImageUrl="~/App_Themes/GOLD Main/ToolBar/trash_16x16.gif"
CommandName="Delete" CssClass="gridviewOptionsImage" OnClientClick="javascript:if(!confirm('This action will delete the selected truck log item. Are you sure?')){return false;}" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridEditCommandColumn ButtonType="ImageButton" EditImageUrl="../App_Themes/GOLD Main/ToolBar/edit_16x16.gif"
CancelImageUrl="../App_Themes/GOLD Main/ToolBar/delete_16x16.gif" UpdateImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif"
HeaderStyle-Width="60px" ItemStyle-CssClass="gridviewOptionsImage" ItemStyle-Wrap="false" />
<telerik:GridBoundColumn DataField="LOGITEM" HeaderText="#" HeaderStyle-Width="30px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="QTY" HeaderText="Qty" AllowFiltering="false"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="LENGTH" HeaderText="Length" HeaderStyle-Width="60px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="RACKNUMBER" HeaderText="Rack #" HeaderStyle-Width="60px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="TALLYCOUNT" HeaderText="Tally" HeaderStyle-Width="40px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="WORKORDERITEMDISPLAY" HeaderText="Work Order"
HeaderStyle-Width="80px" FilterControlWidth="60px" ReadOnly="true" />
<telerik:GridBoundColumn DataField="RELEASENUMBER" HeaderText="Release #" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALTYPE" HeaderText="Type" HeaderStyle-Width="100px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALCOLORBAND" HeaderText="Color" ReadOnly="true" />
<telerik:GridBoundColumn DataField="SIZEVALUE" HeaderText="Size" FilterControlWidth="40px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="MATERIALCOATING" HeaderText="Coating" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALTHREAD" HeaderText="Thread" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALGRADE" HeaderText="Grade" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALRANGE" HeaderText="Range" ReadOnly="true" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
6 Answers, 1 is accepted
You could temporarily disable the Ajax, to make regular post-back instead of Ajax calls. This will allow you to get the error on server side and can help you in debugging the problem.
This error usually happens when the button which triggered a server side event, is not existing on the server any more. For example if you dynamically create a button and then not recreate it on Page_Init this would result in such an error. Is you grid declared in a user control that you load dynamically? Do you add/remove controls from the code-behind?
All the best,
Vasil
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

the grid does sit in an aJaxPanel & i had tried disabling ajax before. is below what you're refering to? and the button is created statically, not dynamically. (<asp:ImageButton ID="DeleteItem" runat="server" ImageUrl="~/App_Themes/GOLD Main/ToolBar/trash_16x16.gif"
CommandName="Delete" CssClass="gridviewOptionsImage" OnClientClick="javascript:if(!confirm('This action will delete the selected truck log item. Are you sure?')){return false;}" />)
below didn't work either.
<telerik:RadAjaxPanel ID="MainContentAjaxPanel" runat="server" LoadingPanelID="ToolBarAjaxLoadingPanel" EnableAJAX="false"> //this had no effect though.
I even commented out this whole AjaxPanel and that had no change either.
there's also another grid on the page with this one that doesn't have that problem and is constructed the same way.it also sits in the ajax panel & i can add buttons on the grid all day long.
i also commented out this grid entirely and started rebuilding another one (different Id) and put the bare minimum in there for it to function. as soon as i added a button on the gridRow - the same thing happened. now, the thing is we have literally 65 other grids in the project with the same exact structure & functionality & this is the 1st one you can't add a delete button to. something is making no sense at all.
do you need me to send you the whole .aspx - possibly you can see something i'm missing?
thanks again
rik
Could you share the aspx page along with the code-behind?
Do you change anything of the grid in the code-behind before Page_Init event? Changing the grid's structure too early, before recreation, of the controls could cause such a problem.
Regards,
Vasil
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

here's the .aspx:
<%
@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShippingTruck.aspx.cs"
Inherits="NOV.GOLD.WebApp.Trucking.ShippingTruck" Theme="GOLD Popup" %>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head id="Head1" runat="server">
<base target="_self" />
<title>NOV GOLD - Shipping Truck</title>
</
head>
<
body>
<form id="form1" runat="server">
<telerik:RadFormDecorator ID="ButtonFormDecorator" runat="server" Skin="WebBlue"
DecoratedControls="Buttons" />
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</asp:ScriptManager>
<script type="text/javascript" src="../Scripts/CommonFunctions.js"></script>
<script type="text/javascript" src="../Scripts/Trucking.js"></script>
<script type="text/javascript" >
function ImportTallyRite(jointcount, tallycount, id) {
var myUser = document.getElementById("txtCurrentUser").value;
var result = "";
var jntCount = jointcount;// RowDataInfoProperty(anchorObject, "TruckLogItemJointCount");
var tlyCount = tallycount;// RowDataInfoProperty(anchorObject, "TruckLogItemTallyCount");
var trkItemID = id;// RowDataInfoProperty(anchorObject, "id");
result = getTally(jntCount, tlyCount);
if (result != "") {
document.all(
"txtTallyRiteData").value = result;
PageMethods.MachineProcessTally(jntCount, result, id,myUser);
__doPostBack(
'__Page', '');//DO POST BACK SO THE PAGE LOAD EVENT WILL PICK THIS UP AND REBIND THE GRID
}
else {
}
}
function getTally(itemQty) {
// obtain objects and init variables
var commTally = document.all('saxcomm8');
var crlf = "\r\n";
var strLine = "";
var strTallies = "";
var tallyKntr = 0;
var JointCount = 0;
var TotalLength = 0.0;
var CheckLength = 0.0;
var holdingVal = 0.0;
var holdingStr = "";
// alert("tool bar is: " + commTally.ToolBarVisible);
if (commTally == null) {
alert(
"The required software is not installed to use the Tally-Rite on this computer.");
return ("");
}
else if (commTally.length == 0) {
alert(
"The software required to use the Tally-Rite on this computer is not installed.");
return ("");
}
else if (commTally.length > 1) {
alert(
"The software required to use the Tally-Rite on this computer is incorrectly installed.");
return ("");
}
else if (commTally.ToolBarVisible == null) {
alert(
"The software needed to use the Tally-Rite on this computer is not installed.");
return ("");
}
// set it up
//commTally.StatusBarVisible = true;
commTally.ToolBarVisible =
false;
// initialize Comm component parameters
commTally.AutoReceive =
false;
commTally.InputMode = 0;
commTally.InTimeOut = 4000;
commTally.InputLen = 0;
// open the comm port and send the trigger character
commTally.PortOpen =
true;
commTally.Output =
"1";
// check to see if comm port got opened sucessfully
// first input line is stack number which can be tossed
strLine = commTally.LineInput;
if (strLine.length == 0) {
alert(
"Please ensure that the cable is connected correctly.");
return ("");
}
// second line is TallyRite's version of the joint count
strLine = commTally.LineInput;
if (strLine.indexOf("END") == -1)
JointCount = parseInt(strLine, 10);
// read tally lines from comm port until the END string is found
strLine = commTally.LineInput;
if (strLine.indexOf("END") == -1)
holdingStr = strLine;
do {
strLine = commTally.LineInput;
if (strLine.indexOf("END") == -1) {
strTallies = strTallies.concat(holdingStr, crlf);
TotalLength += parseFloat(holdingStr.replace(
",", ""));
tallyKntr++;
holdingStr = strLine;
}
else {
CheckLength = parseFloat(holdingStr.replace(
",", ""));
}
}
while (strLine.indexOf("END") == -1);
// close the comm port
commTally.PortOpen =
false;
// check accumulated joint count against TallyRite's count
if (tallyKntr != JointCount) {
alert(
"Corrupt download. Joint count doesn't match. Transfer aborted.");
return ("");
}
// check accumulated length against TallyRite's total
if (TotalLength.toFixed(2) != CheckLength.toFixed(2)) {
alert(
"Corrupt download. Lengths don't match. Transfer aborted.");
return ("");
}
// compare JointCount to what the truck log item expects
if (JointCount == itemQty) {
if (window.confirm("TallyRite has " + JointCount.toString(10) + " tallies,\n" +
"which matches the truck log item quantity.\n" +
"The truck item's length will be adjusted to " + TotalLength.toFixed(2) + "."))
return (strTallies);
}
if (JointCount < itemQty) {
if (window.confirm("TallyRite has " + JointCount.toString(10) + " tallies,\n" +
"which is " + (itemQty - JointCount).toString(10) + " less than the truck log item quantity.\n" +
"Those joints will be returned to the release\n" +
"and the truck item's length adjusted to " + TotalLength.toFixed(2) + "."))
return (strTallies);
}
if (JointCount > itemQty) {
if (window.confirm("TallyRite has " + JointCount.toString(10) + " tallies,\n" +
"which is " + (JointCount - itemQty).toString(10) + " MORE than the truck log item quantity.\n" +
"If there isn't enough material in the release OR IN INVENTORY to make\n" +
"this up, the tallies will NOT BE SAVED! Otherwise the quantity\n" +
"will be increased to match and length will be adjusted to " + TotalLength.toFixed(2) + "."))
return (strTallies);
}
return ("");
}
</script>
<a id="RedirectLink" href="" class="hideObject"></a>
<telerik:RadAjaxPanel ID="MainContentAjaxPanel" runat="server" LoadingPanelID="ToolBarAjaxLoadingPanel">
<div id="header">
<asp:Label ID="HeaderTitleLabel" runat="server" CssClass="popupTitleLabel" />
<div id="headerRight">
Truck Console
</div>
</div>
<div id="mainContent">
<div class="toolbar">
<table>
<tr>
<td>
<telerik:RadToolBar ID="TruckLogToolBar" runat="server" Orientation="Horizontal"
Skin="Default" OnButtonClick="TruckLogToolBar_ButtonClick">
<Items>
<telerik:RadToolBarButton runat="server" Text="Exit" ImagePosition="Left" NavigateUrl="javascript:window.close()"
ImageUrl="~/App_Themes/GOLD Main/ToolBar/delete_16x16.gif" ToolTip="Close Truck Log" />
<telerik:RadToolBarButton runat="server" IsSeparator="true" />
<telerik:RadToolBarButton runat="server" Text="Ship Selected" ImagePosition="Left"
NavigateUrl="" ImageUrl="~/App_Themes/GOLD Main/ToolBar/move_16x16.gif" ToolTip="Truck Selected Items" />
<telerik:RadToolBarButton runat="server" IsSeparator="true" />
<telerik:RadToolBarButton runat="server" Text="Tally Report" ImagePosition="Left"
NavigateUrl="" ImageUrl="~/App_Themes/GOLD Main/ToolBar/print_16x16.gif" ToolTip="Print Truck Tallies" />
<telerik:RadToolBarButton runat="server" Text="Authorize" ImagePosition="Left" NavigateUrl=""
ImageUrl="~/App_Themes/GOLD Main/ToolBar/print_16x16.gif" ToolTip="Print Unloading Authorization" />
<telerik:RadToolBarButton runat="server" Text="Bill of Landing" ImagePosition="Left"
NavigateUrl="" ImageUrl="~/App_Themes/GOLD Main/ToolBar/print_16x16.gif" ToolTip="Print Bill of Landing (BOL)" />
<telerik:RadToolBarButton runat="server" IsSeparator="true" />
<telerik:RadToolBarButton runat="server" Text="Exit Truck" ImagePosition="Left" NavigateUrl=""
ImageUrl="~/App_Themes/GOLD Main/ToolBar/checkmark_16x16.gif" ToolTip="Exit Truck" />
</Items>
</telerik:RadToolBar>
</td>
<td>
<telerik:RadAjaxLoadingPanel ID="ToolBarAjaxLoadingPanel" runat="server" IsSticky="true"
CssClass="ajaxLoadingPanel">
<asp:Image ID="AjaxLoadingImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/ajax_loader_blue.gif"
CssClass="ajaxLoadingImage" />
<asp:Label ID="AjaxLoadingLabel" runat="server" CssClass="ajaxLoadingLabel" Text="Loading..." />
</telerik:RadAjaxLoadingPanel>
</td>
</tr>
</table>
</div>
<telerik:RadTabStrip runat="server" ID="TruckLogTabStrip" SelectedIndex="0" Skin="Default"
MultiPageID="TruckLogMultiPage" Width="100%" CssClass="tabStrip" AutoPostBack="true">
<Tabs>
<telerik:RadTab runat="server" Text="Truck Info" PageViewID="TruckInfoPageView" />
<telerik:RadTab runat="server" Text="Log Items" PageViewID="LogItemsPageView" />
</Tabs>
</telerik:RadTabStrip>
<telerik:RadMultiPage runat="server" ID="TruckLogMultiPage" SelectedIndex="0" CssClass="multiPageView"
RenderSelectedPageOnly="true">
<telerik:RadPageView runat="server" ID="TruckInfoPageView">
<table class="detailsTable" id="TruckLogHeaderInfoTable" runat="server">
<tr>
<td class="disabledDesc">
Truck Type
</td>
<td>
<telerik:RadComboBox ID="TruckTypeComboBox" runat="server" Width="120px" Skin="WebBlue"
Enabled="false">
<Items>
<telerik:RadComboBoxItem Value="0" Text="Shipping" />
<telerik:RadComboBoxItem Value="-1" Text="Receiving" />
</Items>
</telerik:RadComboBox>
</td>
<td class="disabledDesc">
Date In
</td>
<td>
<telerik:RadTextBox ID="DateInTextBox" runat="server" Width="150px" Skin="WebBlue"
CssClass="textbox" ReadOnly="true" />
</td>
</tr>
<tr>
<td class="disabledDesc">
Status
</td>
<td>
<telerik:RadComboBox ID="StatusComboBox" runat="server" Width="100px" Skin="WebBlue"
Enabled="false">
<Items>
<telerik:RadComboBoxItem Text="In Yard" />
</Items>
</telerik:RadComboBox>
</td>
<td class="disabledDesc">
Division
</td>
<td>
<telerik:RadTextBox ID="DivisionTextBox" runat="server" Width="200px" Skin="WebBlue"
CssClass="textbox" ReadOnly="true" />
</td>
</tr>
</table>
<div class="detailsHeader">
Truck Information
</div>
<table class="detailsTable">
<tr>
<td class="requiredDesc">
Carrier
</td>
<td>
<telerik:RadComboBox ID="CarrierComboBox" runat="server" Width="200px" Skin="WebBlue"
EmptyMessage="- Select -" EnableLoadOnDemand="true" OnItemsRequested="CarrierComboBox_ItemsRequested"
AllowCustomText="false" DataTextField="TRUCKCARRIER" DataValueField="TRUCKCARRIERID"
Height="120px" />
</td>
</tr>
<tr>
<td class="requiredDesc">
Truck #
</td>
<td>
<telerik:RadTextBox ID="TruckNumberTextBox" runat="server" Width="200px" Skin="WebBlue"
CssClass="textbox" />
</td>
</tr>
<tr>
<td class="requiredDesc">
Driver
</td>
<td>
<telerik:RadTextBox ID="TruckDriverTextBox" runat="server" Width="200px" Skin="WebBlue"
CssClass="textbox" />
</td>
</tr>
<tr>
<td class="requiredDesc">
Witness
</td>
<td>
<telerik:RadComboBox ID="WitnessComboBox" runat="server" Width="200px" Skin="WebBlue"
EmptyMessage="- Select -" EnableLoadOnDemand="true" OnItemsRequested="WitnessComboBox_ItemsRequested"
AllowCustomText="false" DataTextField="WITNESSNAME" DataValueField="WITNESSID"
Height="120px" />
</td>
</tr>
<tr>
<td class="inputDesc">
Trucking
<br />
Comments
</td>
<td>
<telerik:RadTextBox ID="TruckingCommentsTextBox" runat="server" Width="400px" Skin="WebBlue"
CssClass="textbox" TextMode="MultiLine" Rows="5" />
</td>
</tr>
<tr>
<td class="disabledDesc">
Release
<br />
Comments
</td>
<td>
<telerik:RadTextBox ID="ReleaseCommentsTextBox" runat="server" Width="400px" Skin="WebBlue"
CssClass="textbox" TextMode="MultiLine" Rows="5" ReadOnly="true" />
</td>
</tr>
</table>
<br />
<div id="OKCancelButtons">
<asp:Button ID="OKButton" runat="server" Text="OK" CssClass="button" OnClick="OKButton_Click" />
<asp:Button ID="CancelButton" runat="server" Text="Cancel" CssClass="button" OnClientClick="window.close();" />
</div>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="LogItemsPageView">
<asp:Button ID="btnReleases" runat="server" Text="Show More Releases" OnClick="btnReleases_Click" Visible="false" />
<br />
<telerik:RadGrid runat="server" ID="OpenReleasesRadGrid" Skin="WebBlue" AllowPaging="true"
AllowCustomPaging="false" EnableLinqExpressions="true" PageSize="15" AutoGenerateColumns="false"
EnableTheming="false" AllowFilteringByColumn="true" OnNeedDataSource="OpenReleasesRadGrid_NeedDataSource"
OnItemCommand="OpenReleasesRadGrid_ItemCommand">
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" />
<PagerStyle Mode="NextPrevAndNumeric" />
<MasterTableView DataKeyNames="RELEASEID" CommandItemSettings-ShowAddNewRecordButton="false"
EditMode="PopUp" CommandItemDisplay="Top" CommandItemSettings-RefreshText="Refresh"
CommandItemSettings-RefreshImageUrl="~/App_Themes/GOLD Main/ToolBar/refresh_16x16.gif">
<Columns>
<telerik:GridBoundColumn DataField="RELEASENUMBER" HeaderText="Release #" FilterControlWidth="60px" />
<telerik:GridBoundColumn DataField="RELEASE1" HeaderText="Release #1" FilterControlWidth="100px" />
<telerik:GridBoundColumn DataField="DESTLOCATION" HeaderText="Destination" FilterControlWidth="110px" />
<telerik:GridDateTimeColumn DataField="SHIPDATE" HeaderText="Shipping Date" DataFormatString="{0:dd-MMM-yyyy}"
FilterControlWidth="100px" />
<telerik:GridBoundColumn DataField="RELBYCOMPANYNAME" HeaderText="Company" FilterControlWidth="110px" />
<telerik:GridBoundColumn DataField="TRUCKCARRIER" HeaderText="Carrier" FilterControlWidth="110px" />
<telerik:GridBoundColumn DataField="RELEASEDBY" HeaderText="Released By" FilterControlWidth="110px" />
<telerik:GridDateTimeColumn DataField="RELEASEDATE" HeaderText="Release Date" DataFormatString="{0:dd-MMM-yyyy}"
FilterControlWidth="100px" />
<telerik:GridBoundColumn DataField="DESTCITY" HeaderText="City" FilterControlWidth="80px" />
<telerik:GridBoundColumn DataField="DESTSTATE" HeaderText="State" HeaderStyle-Width="40px" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
<telerik:RadGrid ID="ReleasedInventoryRadGrid" runat="server" AllowPaging="true" Visible="false"
AutoGenerateColumns="false" Skin="WebBlue" PageSize="8" EnableTheming="false"
AllowFilteringByColumn="true" OnItemDataBound="ReleasedInventoryRadGrid_ItemDataBound"
OnNeedDataSource="ReleasedInventoryRadGrid_NeedDataSource" Width="1800px" OnItemCreated="ReleasedInventoryRadGrid_ItemCreated"
AllowMultiRowSelection="true">
<GroupingSettings CaseSensitive="false" />
<PagerStyle Mode="NumericPages" />
<MasterTableView DataKeyNames="INVENTORYID,RELEASEDATE,RELEASEDBY,MATERIALDESCRIPTION,MATERIALTYPEID">
<HeaderStyle HorizontalAlign="Left" />
<Columns>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="30px" UniqueName="OptionsMenuCell"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="30px" ItemStyle-Wrap="false"
ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:Image ID="RecordInfoImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/grid_info.gif"
CssClass="gridviewOptionsImage" />
<telerik:RadToolTip ID="InfoRadToolTip" runat="server" TargetControlID="RecordInfoImage"
Skin="Sunset" Position="MiddleRight" CssClass="gridviewToolTip" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="20px" UniqueName="SelectionCheckBoxCell"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="20px" ItemStyle-Wrap="false"
ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:CheckBox ID="RowSelectionCheckBox" runat="server" AutoPostBack="true" OnCheckedChanged="CheckBoxRowSelection" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="50px" UniqueName="QtyOutColumn"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="50px" HeaderText="Qty Out">
<ItemTemplate>
<telerik:RadTextBox ID="QuantityOutGridTextBox" runat="server" Width="40px" CssClass="textbox"
Skin="WebBlue" AutoPostBack="true" OnTextChanged="TextBoxRowSelection" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="RACKNUMBER" HeaderText="Rack Number" />
<telerik:GridBoundColumn DataField="WORKORDERITEMDISPLAY" HeaderText="Work Order"
HeaderStyle-Width="80px" FilterControlWidth="60px" />
<goldcustom:ComboBoxFilteringColumn DataField="MATERIALTYPE" HeaderText="Type" ReadOnly="true"
ComboBoxFilterDataSourceID="MaterialTypeFilterODS" ComboBoxFilterSkin="WebBlue"
ComboBoxFilterWidth="100px" HeaderStyle-Width="100px" />
<telerik:GridBoundColumn DataField="MATERIALCOLORBAND" HeaderText="Color" FilterControlWidth="60px" />
<telerik:GridBoundColumn DataField="ADJ_QTY" HeaderText="Qty" AllowFiltering="false"
ItemStyle-HorizontalAlign="Right" />
<telerik:GridBoundColumn DataField="ADJ_LENGTH" HeaderText="Length" AllowFiltering="false"
ItemStyle-HorizontalAlign="Right" />
<telerik:GridBoundColumn DataField="SIZEVALUE" HeaderText="Size" FilterControlWidth="40px" />
<telerik:GridBoundColumn DataField="WEIGHTPERLENGTH" HeaderText="Weight" FilterControlWidth="40px" />
<telerik:GridBoundColumn DataField="MATERIALGRADE" HeaderText="Grade" FilterControlWidth="40px" />
<telerik:GridBoundColumn DataField="RELEASENUMBER" HeaderText="Release #" FilterControlWidth="70px" />
<telerik:GridDateTimeColumn DataField="RELEASEDATE" HeaderText="Release Date" DataFormatString="{0:dd-MMM-yyyy}"
ReadOnly="true" FilterControlWidth="90px" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
<br />
<asp:Panel ID="Panel2" runat="server" CssClass="detailsHeader" Width="100%">
Truck Log Items
</asp:Panel>
<telerik:RadGrid ID="TruckLogItemsRadGrid" runat="server" AllowPaging="false" AutoGenerateColumns="false"
Skin="WebBlue" EnableTheming="false" AllowFilteringByColumn="false" OnItemDataBound="TruckLogItemsRadGrid_ItemDataBound"
OnNeedDataSource="TruckLogItemsRadGrid_NeedDataSource" Width="100%" ShowStatusBar="true"
OnDeleteCommand="TruckLogItemsRadGrid_DeleteCommand" OnUpdateCommand="TruckLogItemsRadGrid_UpdateCommand">
<GroupingSettings CaseSensitive="false" />
<MasterTableView EditMode="InPlace" DataKeyNames="TRUCKLOGITEMID,AVGLENGTH,MATERIALRANGEID,MATERIALTYPE,JOINTCOUNT,TALLYCOUNT,CREATEDDATE,CREATEDBY,LASTUPDATED,LASTUPDATEDBY,MATERIALTYPEID,MATERIALDESCRIPTION">
<HeaderStyle HorizontalAlign="Left" />
<Columns>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="50px" UniqueName="OptionsMenuCell"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="50px" ItemStyle-Wrap="false">
<ItemTemplate>
<asp:Image ID="RecordInfoImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/grid_info.gif"
CssClass="gridviewOptionsImage" />
<telerik:RadToolTip ID="InfoRadToolTip" runat="server" TargetControlID="RecordInfoImage"
Skin="Sunset" Position="MiddleRight" CssClass="gridviewToolTip" />
<asp:Image ID="PopupMenuImage" runat="server" ImageUrl="~/App_Themes/GOLD Main/Images/grid_menu_popup.gif"
CssClass="gridviewOptionsImage" />
<telerik:RadContextMenu ID="OptionsRadContextMenu" runat="server" Skin="WebBlue"
CssClass="leftText">
<Targets>
<telerik:ContextMenuControlTarget ControlID="PopupMenuImage" />
</Targets>
<Items>
<telerik:RadMenuItem Text="Import From Tally-Rite Device" ImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif" />
<telerik:RadMenuItem Text="Edit Tally Data" ImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif" />
</Items>
</telerik:RadContextMenu>
<asp:ImageButton ID="DeleteItem" runat="server" ImageUrl="~/App_Themes/GOLD Main/ToolBar/trash_16x16.gif"
CommandName="Delete" CssClass="gridviewOptionsImage" OnClientClick="javascript:if(!confirm('This action will delete the selected truck log item. Are you sure?')){return false;}" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridEditCommandColumn ButtonType="ImageButton" EditImageUrl="../App_Themes/GOLD Main/ToolBar/edit_16x16.gif"
CancelImageUrl="../App_Themes/GOLD Main/ToolBar/delete_16x16.gif" UpdateImageUrl="../App_Themes/GOLD Main/ToolBar/save_16x16.gif"
HeaderStyle-Width="60px" ItemStyle-CssClass="gridviewOptionsImage" ItemStyle-Wrap="false" />
<telerik:GridBoundColumn DataField="LOGITEM" HeaderText="#" HeaderStyle-Width="30px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="QTY" HeaderText="Qty" AllowFiltering="false"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="LENGTH" HeaderText="Length" HeaderStyle-Width="60px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="RACKNUMBER" HeaderText="Rack #" HeaderStyle-Width="60px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="TALLYCOUNT" HeaderText="Tally" HeaderStyle-Width="40px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="WORKORDERITEMDISPLAY" HeaderText="Work Order"
HeaderStyle-Width="80px" FilterControlWidth="60px" ReadOnly="true" />
<telerik:GridBoundColumn DataField="RELEASENUMBER" HeaderText="Release #" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALTYPE" HeaderText="Type" HeaderStyle-Width="100px"
ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALCOLORBAND" HeaderText="Color" ReadOnly="true" />
<telerik:GridBoundColumn DataField="SIZEVALUE" HeaderText="Size" FilterControlWidth="40px"
ColumnEditorID="TextBoxColumnEditorDefault" />
<telerik:GridBoundColumn DataField="MATERIALCOATING" HeaderText="Coating" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALTHREAD" HeaderText="Thread" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALGRADE" HeaderText="Grade" ReadOnly="true" />
<telerik:GridBoundColumn DataField="MATERIALRANGE" HeaderText="Range" ReadOnly="true" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
<br /><br />
<telerik:GridTextBoxColumnEditor ID="TextBoxColumnEditorDefault" runat="server" TextBoxStyle-Width="70px"
TextBoxStyle-CssClass="textbox" />
</telerik:RadPageView>
</telerik:RadMultiPage>
<asp:Label ID="lblError" runat="server" Font-Bold="true" ForeColor="Red" />
<input id="txtCurrentUser" runat="server" type="hidden" />
</div>
</telerik:RadAjaxPanel>
<input id="txtTallyRiteData" type="hidden" />
<div id="saxObj" runat="server" ></div>
<!-- ****** START Column Filter ObjectDataSources ****** -->
<asp:ObjectDataSource ID="WorkOrderTypeFilterODS" runat="server" SelectMethod="GetWorkOrderTypes"
TypeName="NOV.GOLD.Business.WorkOrdersBC" />
<asp:ObjectDataSource ID="MaterialTypeFilterODS" runat="server" SelectMethod="GetMaterialTypes"
TypeName="NOV.GOLD.Business.WorkOrdersBC" />
<asp:ObjectDataSource ID="WorkOrderItemStatusFilterODS" runat="server" SelectMethod="GetWorkOrderItemStatusMessages"
TypeName="NOV.GOLD.Business.WorkOrdersBC" />
<!-- ****** END Column Filter ObjectDataSources ****** -->
</form>
</
body>
</
html>
and the code behind:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
NOV.GOLD.Business;
using
NOV.GOLD.Entities;
using
Telerik.Web;
using
Telerik.Web.UI;
using
System.Web.UI.HtmlControls;
namespace
NOV.GOLD.WebApp.Trucking
{
public partial class ShippingTruck : NOV.GOLD.BasePages.TruckingBasePage
{
public int ReleaseID
{
get { return Convert.ToInt32(ViewState["ReleaseID"]); }
set { ViewState["ReleaseID"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Set the text of the header labels
SetHeaderLabels();
// Set properties of the toolbar buttons
SetToolBarButtons();
// Fill in the form data for existing truck log
FillFormData();
txtCurrentUser.Value = CurrentUserName.ToUpper();
if (!IsNewTruckLog)
{
RadTab tab = (RadTab)TruckLogTabStrip.Tabs[1];
tab.Selected =
true;
RadPageView view = (RadPageView)TruckLogMultiPage.PageViews[1];
view.Selected =
true;
}
}
// Enable or disable controls
EnableDisableControls();
ReloadTruckLogItemsRadGrid();
//TO RELOAD THE GRID ON POST BACK
}
protected void OKButton_Click(object sender, EventArgs e)
{
UpdateTruckLog();
RadTab tab = (RadTab)TruckLogTabStrip.Tabs[1];
tab.Selected =
true;
RadPageView view = (RadPageView)TruckLogMultiPage.PageViews[1];
view.Selected =
true;
SetHeaderLabels();
SetToolBarButtons();
FillFormData();
EnableDisableControls();
using (TruckingBC tbc = new TruckingBC())
{
OpenReleasesRadGrid.DataSource = tbc.GetReleasedInventoryForTruckLog(DivisionIDArray);
OpenReleasesRadGrid.DataBind();
}
}
#region
TruckLogToolBar Event Methods
protected void TruckLogToolBar_ButtonClick(object sender, RadToolBarEventArgs e)
{
if (e.Item.Text == "Ship Selected" && ReleasedInventoryRadGrid.SelectedItems.Count > 0)
{
string batchdata = "";
foreach (GridDataItem dataItem in ReleasedInventoryRadGrid.SelectedItems)
{
string inventoryid = Convert.ToString(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["INVENTORYID"]);
string qtyout = (dataItem["QtyOutColumn"].FindControl("QuantityOutGridTextBox") as RadTextBox).Text;
if (!String.IsNullOrEmpty(qtyout))
{
batchdata += (inventoryid +
";" + qtyout + ";");
}
}
using (TruckingBC tbc = new TruckingBC())
{
tbc.BatchAddTruckLogItemsShipping(SelectedTruckLog.TruckLogID, batchdata, CurrentUserName);
}
ReleasedInventoryRadGrid.Rebind();
createSax();
TruckLogItemsRadGrid.Rebind();
}
}
#endregion
#region
ComboBox Methods
protected void CarrierComboBox_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox comboBox = (RadComboBox)sender;
using (TruckingBC tbc = new TruckingBC())
{
comboBox.DataSource = tbc.GetTruckCarriers(DivisionIDArray, e.Text.Replace(
"'", ""));
comboBox.DataBind();
}
}
protected void WitnessComboBox_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox comboBox = (RadComboBox)sender;
using (TruckingBC tbc = new TruckingBC())
{
comboBox.DataSource = tbc.GetThirdPartyWitnesses(DivisionIDArray, e.Text);
comboBox.DataBind();
}
}
#endregion
private void GetReleasedInventory()
{
using (TruckingBC tbc = new TruckingBC())
{
ReleasedInventoryRadGrid.DataSource = tbc.GetReleasedInventoryForTruckLog(SelectedTruckLog.TruckLogID, DivisionIDArray, ReleaseID);
ReleasedInventoryRadGrid.DataBind();
}
}
protected void btnReleases_Click(object sender, EventArgs e)
{
using (TruckingBC tbc = new TruckingBC())
{
OpenReleasesRadGrid.DataSource = tbc.GetReleasedInventoryForTruckLog(DivisionIDArray);
OpenReleasesRadGrid.DataBind();
OpenReleasesRadGrid.Visible =
true;
}
ReleasedInventoryRadGrid.Visible =
false;
btnReleases.Visible =
false;
}
#region
RadGrid NeedDataSources
protected void ReleasedInventoryRadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
if (ReleasedInventoryRadGrid.Visible)
{
using (TruckingBC tbc = new TruckingBC())
{
ReleasedInventoryRadGrid.DataSource = tbc.GetReleasedInventoryForTruckLog(SelectedTruckLog.TruckLogID, DivisionIDArray, ReleaseID);
}
}
}
protected void OpenReleasesRadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
using (TruckingBC tbc = new TruckingBC())
{
OpenReleasesRadGrid.DataSource = tbc.GetReleasedInventoryForTruckLog(DivisionIDArray);
}
}
//ONLY USED ON POST BACK
protected void ReloadTruckLogItemsRadGrid()
{
using (TruckingBC tbc = new TruckingBC())
{
createSax();
//WILL INITIALIZE THE TALLY RITE .EXE SOFTWARE
TruckLogItemsRadGrid.DataSource = tbc.GetTruckLogItemsShipping(SelectedTruckLog.TruckLogID);
TruckLogItemsRadGrid.DataBind();
}
}
protected void TruckLogItemsRadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
using (TruckingBC tbc = new TruckingBC())
{
TruckLogItemsRadGrid.DataSource = tbc.GetTruckLogItemsShipping(SelectedTruckLog.TruckLogID);
}
}
#endregion
#region
RadGrid ItemDataBound Methods
protected void ReleasedInventoryRadGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem boundItem = (GridDataItem)e.Item;
string inventoryid = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["INVENTORYID"]);
string releasedate = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["RELEASEDATE"]);
string releasedby = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["RELEASEDBY"]);
int materialtypeid = Convert.ToInt32(boundItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALTYPEID"]);
string materialdesc = boundItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALDESCRIPTION"].ToString();
if (materialtypeid == 7 || materialtypeid == 10)
{
// Remove columns that are not needed
boundItem[
"WEIGHTPERLENGTH"].Visible = false;
boundItem[
"MATERIALGRADE"].Visible = false;
// Set the text to the material description
boundItem[
"SIZEVALUE"].ColumnSpan = 3;
boundItem[
"SIZEVALUE"].Text = materialdesc;
}
// Format the tooltip for the record information
RadToolTip InfoToolTip = (RadToolTip)boundItem.Cells[0].FindControl(
"InfoRadToolTip");
InfoToolTip.Text =
"<b><u>Inventory ID</u></b><br/>" + inventoryid + "<br/><br/>" +
"<b><u>Released</u></b><br/>" + releasedate + " " + releasedby + "<br/>";
}
}
protected void TruckLogItemsRadGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem boundItem = (GridDataItem)e.Item;
string trucklogitemid = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["TRUCKLOGITEMID"]);
string createdate = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["CREATEDDATE"]);
string createdby = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["CREATEDBY"]);
string lastupdate = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["LASTUPDATED"]);
string lastupdateby = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["LASTUPDATEDBY"]);
int materialtypeid = Convert.ToInt32(boundItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALTYPEID"]);
string materialdesc = boundItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALDESCRIPTION"].ToString();
string myQty = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["QTY"]);
string jointCount = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["JOINTCOUNT"]);
string tallyCount = Convert.ToString(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["TALLYCOUNT"]);
if (materialtypeid == 7 || materialtypeid == 10)
{
// Remove columns that are not needed
boundItem[
"MATERIALCOATING"].Visible = false;
boundItem[
"MATERIALTHREAD"].Visible = false;
boundItem[
"MATERIALGRADE"].Visible = false;
boundItem[
"MATERIALRANGE"].Visible = false;
// Set the text to the material description
boundItem[
"SIZEVALUE"].ColumnSpan = 5;
boundItem[
"SIZEVALUE"].Text = materialdesc;
}
// Format the tooltip for the record information
RadToolTip InfoToolTip = (RadToolTip)boundItem.Cells[0].FindControl(
"InfoRadToolTip");
InfoToolTip.Text =
"<b><u>Truck Log Item ID</u></b><br/>" + trucklogitemid + "<br/><br/>" +
"<b><u>Created</u></b><br/>" + createdby + " " + createdate + "<br/><br/>" +
"<b><u>Last Updated</u></b><br/>" + lastupdateby + " " + lastupdate + "<br/>";
RadMenu RadPopupMenu = (RadMenu)e.Item.Cells[0].FindControl(
"OptionsRadContextMenu");
RadPopupMenu.Items[1].NavigateUrl =
String.Format("javascript:OpenAddTallyData({0},{1})", trucklogitemid, SelectedTruckLog.TruckLogID);
RadPopupMenu.Items[0].NavigateUrl =
String.Format("javascript:ImportTallyRite({0},{1},{2},{3})", jointCount, tallyCount, trucklogitemid, SelectedTruckLog.TruckLogID);
if (AllDivisions || IsViewOnly)
{
((ImageButton)e.Item.Cells[0].FindControl(
"DeleteItem")).Visible = false;
}
}
}
#endregion
#region
RadGrid Command Event Methods
protected void TruckLogItemsRadGrid_UpdateCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editItem = e.Item
as GridEditableItem;
int truckLogItemId = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["TRUCKLOGITEMID"]);
int qty = Convert.ToInt32((editItem["QTY"].Controls[0] as TextBox).Text);
decimal length = Convert.ToDecimal((editItem["LENGTH"].Controls[0] as TextBox).Text);
decimal avg = Convert.ToDecimal(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AVGLENGTH"]);
int range = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALRANGEID"]);
string materialtype = Convert.ToString(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["MATERIALTYPE"]);
//int retVal = 0;
switch (materialtype)
{
case "CPLG STOCK":
case "DRILL PIPE":
case "LINE PIPE":
case "PIPE":
case "PONY RODS":
case "PUP JOINTS":
case "SUCKER ROD":
length = GetShipCalculateLength(qty, length,avg);
break;
}
bool allGood = false;
double quantity = Convert.ToDouble(qty);
double len = Convert.ToDouble(length);
switch (materialtype)
{
case "DRILL PIPE":
case "PIPE":
case "PUP JOINTS":
allGood = IsLengthQuantityInTolerance(quantity, len, range);
break;
}
if (!allGood)
{
double avgLen = Math.Round(len / quantity * 100) / 100;
lblError.Text =
"Average length of " + avgLen + " is out of tolerance for specified range.";
}
else
{
if (truckLogItemId > 0 && qty > 0)
{
int retVal = 0;
using (TruckingBC tbc = new TruckingBC())
{
retVal = tbc.UpdateTruckLogItemShipping(truckLogItemId, qty, length, CurrentUserName);
}
if (retVal < 0)
{
using (AdminBC obj = new AdminBC())
{
lblError.Text = obj.returnErrorCode(retVal);
}
}
else
{
TruckLogItemsRadGrid.Rebind();
lblError.Text =
"";
}
}
}
}
protected void TruckLogItemsRadGrid_DeleteCommand(object sender, GridCommandEventArgs e)
{
string truckLogItemIdString = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["TRUCKLOGITEMID"].ToString();
if (!String.IsNullOrEmpty(truckLogItemIdString))
{
using (TruckingBC tbc = new TruckingBC())
{
int truckLogItemId = truckLogItemIdString.ToInt32();
tbc.DeleteTruckLogItem(truckLogItemId, CurrentUserName);
}
}
ReleasedInventoryRadGrid.Rebind();
TruckLogItemsRadGrid.Rebind();
}
#endregion
#region
RadGrid Item Selection Methods
protected void CheckBoxRowSelection(object sender, EventArgs e)
{
((sender
as CheckBox).Parent.Parent as GridItem).Selected = (sender as CheckBox).Checked;
}
protected void TextBoxRowSelection(object sender, EventArgs e)
{
((sender
as RadTextBox).Parent.Parent as GridItem).Selected = !String.IsNullOrEmpty((sender as RadTextBox).Text);
}
protected void ReleasedInventoryRadGrid_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
e.Item.PreRender +=
new EventHandler(ReleasedInventoryRadGrid_ItemPreRender);
}
}
private void ReleasedInventoryRadGrid_ItemPreRender(object sender, EventArgs e)
{
((sender
as GridDataItem)["SelectionCheckBoxCell"].FindControl("RowSelectionCheckBox") as CheckBox).Checked = (sender as GridDataItem).Selected;
}
protected void OpenReleasesRadGrid_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "RowClick" && e.Item is GridDataItem)
{
e.Item.Selected =
true;
GridDataItem boundItem = (GridDataItem)e.Item;
ReleaseID =
Convert.ToInt32(boundItem.OwnerTableView.DataKeyValues[boundItem.ItemIndex]["RELEASEID"]);
OpenReleasesRadGrid.Visible =
false;
ReleasedInventoryRadGrid.Visible =
true;
GetReleasedInventory();
btnReleases.Visible =
true;
}
}
#endregion
#region
Private Methods
private decimal GetShipCalculateLength(int qty, decimal length, decimal avg)
{
decimal newLength = Math.Round(100 * qty * avg) / 100;
if (Math.Round(newLength) != Math.Round(length))
length = newLength;
return length;
}
private bool IsLengthQuantityInTolerance(double quantity, double length, int range)
{
bool allGood = false;
double l;
double q;
int r;
double max = 0;
double min = 0;
l = length;
q = quantity;
r = range;
double conversion = (DivisionImperialSystem) ? 1 : 0.3048;
switch (range)
{
case 1:
min = 16 * conversion;
max = 25 * conversion;
//Range I: def = 21;
break;
case 2:
min = 25 * conversion;
max = 34 * conversion;
//Range II: def = 31.5;
break;
case 3:
min = 34 * conversion;
max = 48 * conversion;
//Range III: def = 41;
break;
default:
allGood =
true; //always pass if unrecognized range
break;
}
if (allGood)
return allGood;
return (l <= (max * q) && l >= (min * q));
}
private void SetHeaderLabels()
{
HeaderTitleLabel.Text = (IsNewTruckLog) ?
"New Shipping Truck" :
String.Format("Shipping Truck Log #: {0}", SelectedTruckLog.TruckLogNumber);
}
private void SetToolBarButtons()
{
if (!IsNewTruckLog)
{
// Set the NavigateURL for the exit truck button
(TruckLogToolBar.Items[8]
as RadToolBarButton).NavigateUrl =
String.Format("ExitTruck.aspx?trucklogid={0}", SelectedTruckLog.TruckLogID);
// Set the NavigateURL for the Print Unloading Authorization button
(TruckLogToolBar.Items[5]
as RadToolBarButton).NavigateUrl = String.Format("javascript:PrintReport_UnloadAuthorization({0})", SelectedTruckLog.TruckLogID);
}
}
private void EnableDisableControls()
{
int i; // Iterator variable
if (IsNewTruckLog)
{
for (i = 1; i < TruckLogToolBar.Items.Count; i++)
{
TruckLogToolBar.Items[i].Visible =
false;
}
TruckLogTabStrip.Tabs[1].Visible =
false;
TruckLogHeaderInfoTable.Visible =
false;
}
else
{
for (i = 1; i < TruckLogToolBar.Items.Count; i++)
{
TruckLogToolBar.Items[i].Visible =
true;
if (i == 2)
{
TruckLogToolBar.Items[i].Enabled = (TruckLogTabStrip.SelectedIndex == 1);
}
else
{
TruckLogToolBar.Items[i].Enabled =
true;
}
}
TruckLogTabStrip.Tabs[1].Visible =
true;
TruckLogHeaderInfoTable.Visible =
true;
}
// Enable/Disable controls if in view only mode
EnableDisableViewOnly();
}
private void EnableDisableViewOnly()
{
if (IsViewOnly || AllDivisions)
{
OKButton.Enabled = CancelButton.Enabled =
false; // OK and Cancel
// All toolbar buttons except Exit and Authorize
for (int i = 0; i < TruckLogToolBar.Items.Count; i++)
{
TruckLogToolBar.Items[i].Enabled = (i == 0 || i == 5);
}
// Truck log items grid edit column
TruckLogItemsRadGrid.Columns[1].Visible =
false;
}
}
private void FillFormData()
{
if (!IsNewTruckLog)
{
TruckTypeComboBox.SelectedValue = SelectedTruckLog.IsReceivingTruck ?
"-1" : "0";
DateInTextBox.Text = SelectedTruckLog.DateIn.Value.ToString();
DivisionTextBox.Text = SelectedTruckLog.LocationName;
CarrierComboBox.Text = SelectedTruckLog.TruckCarrier;
TruckNumberTextBox.Text = SelectedTruckLog.TruckNumber;
TruckDriverTextBox.Text = SelectedTruckLog.DriverName;
WitnessComboBox.Text = SelectedTruckLog.Witness;
TruckingCommentsTextBox.Text = SelectedTruckLog.Comments;
ReleaseCommentsTextBox.Text = SelectedTruckLog.ReleaseComments;
}
else
{
WitnessComboBox.Text =
"NO MONITOR REQUIRED";
}
}
private void UpdateTruckLog()
{
using (TruckingBC tbc = new TruckingBC())
{
TruckLog updatedTruckLog =
new TruckLog();
updatedTruckLog.TruckNumber = TruckNumberTextBox.Text;
updatedTruckLog.DriverName = TruckDriverTextBox.Text;
updatedTruckLog.IsReceivingTruck =
false;
updatedTruckLog.Witness = WitnessComboBox.Text;
updatedTruckLog.Comments = TruckingCommentsTextBox.Text;
// TODO: Shipping Truck - Add Late Departure Comments TextBox
updatedTruckLog.LateDepartureComments =
"";
updatedTruckLog.TruckCarrier = CarrierComboBox.Text;
//.Replace("'","'''");
updatedTruckLog.LocationID = DivisionID;
updatedTruckLog.LocationName = DivisionName;
updatedTruckLog.LastUpdatedBy = CurrentUserName.ToUpper();
if (IsNewTruckLog)
{
int newTruckLogId = tbc.AddTruckLog(updatedTruckLog);
SelectedTruckLog = tbc.GetTruckLog(newTruckLogId);
IsNewTruckLog =
false;
}
else
{
updatedTruckLog.TruckLogID = SelectedTruckLog.TruckLogID;
tbc.UpdateTruckLog(updatedTruckLog);
SelectedTruckLog = tbc.GetTruckLog(updatedTruckLog.TruckLogID);
}
}
}
#endregion
#region
TallyRiteDevice
////may Use System.Web.UI.ICallbackEventHandler
//THIS IS CALLLED FROM THE JAVASCRIPT SIDE OF TALLYRITE - MUST GO TO A STATIC METHOD - THEN CLASS HAS TO BE REFERENCED FROM IN HERE TO DO ANYTHING ELSE
[System.Web.Services.WebMethod]
public static void MachineProcessTally(int jointCount, string vData, int trucklogitemid,string myUser)
{
string tallyWBreaks = vData;
string tallyData = tallyWBreaks.Replace("\r\n", ";");
if (tallyData.EndsWith(";"))
{ }
else
{
tallyData = tallyData +
";";
}
using (TruckTalliesBC tt = new TruckTalliesBC())
{
int retVal = tt.tally_processmachinetally(trucklogitemid, tallyData, myUser);
}
}
//this will go into the Menu Item to open the tally rite Sax.exe
protected void createSax()//FILLS THE DIV CONTROL OUTSIDE THE AJAX PANEL WITH THE .EXE INITIALIZATION PROPERTIES
{
HtmlGenericControl sax =
new HtmlGenericControl();
//USED A DIV CONTROL OUTSIDE OF THE RAD AJAX PANEL AND RUN THIS WHEN THE GRID COMES UP
saxObj.InnerHtml =
"<OBJECT id='saxcomm8' style='DISPLAY:none' classid='clsid:4A037C55-D2A8-435E-B42E-1B25CDA784FA' VIEWASTEXT>"
+
"<PARAM NAME='_cx' VALUE='0'>"
+
"<PARAM NAME='_cy' VALUE='0'>"
+
"<PARAM NAME='Enabled' VALUE='-1'>"
+
"<PARAM NAME='Settings' VALUE='2400,n,8,1'>"
+
"<PARAM NAME='BackColor' VALUE='1'>"
+
"<PARAM NAME='Columns' VALUE='40'>"
+
"<PARAM NAME='AutoProcess' VALUE='2'>"
+
"<PARAM NAME='AutoScrollColumn' VALUE='0'>"
+
"<PARAM NAME='AutoScrollKeyboard' VALUE='-1'>"
+
"<PARAM NAME='AutoScrollRow' VALUE='-1'>"
+
"<PARAM NAME='AutoSize' VALUE='0'>"
+
"<PARAM NAME='BackSpace' VALUE='0'>"
+
"<PARAM NAME='CaptureFilename' VALUE=''>"
+
"<PARAM NAME='CaptureMode' VALUE='0'>"
+
"<PARAM NAME='CDTimeOut' VALUE='0'>"
+
"<PARAM NAME='ColorFilter' VALUE='0'>"
+
"<PARAM NAME='CommEcho' VALUE='0'>"
+
"<PARAM NAME='CommPort' VALUE='COM1'>"
+
"<PARAM NAME='CommSpy' VALUE='0'>"
+
"<PARAM NAME='CommSpyInput' VALUE='0'>"
+
"<PARAM NAME='CommSpyOutput' VALUE='0'>"
+
"<PARAM NAME='CommSpyProperties' VALUE='0'>"
+
"<PARAM NAME='CommSpyWarnings' VALUE='0'>"
+
"<PARAM NAME='CommSpyEvents' VALUE='0'>"
+
"<PARAM NAME='CTSTimeOut' VALUE='0'>"
+
"<PARAM NAME='DialMode' VALUE='0'>"
+
"<PARAM NAME='DialTimeOut' VALUE='60000'>"
+
"<PARAM NAME='DSRTimeOut' VALUE='0'>"
+
"<PARAM NAME='Echo' VALUE='0'>"
+
"<PARAM NAME='Emulation' VALUE='4'>"
+
"<PARAM NAME='EndOfLineMode' VALUE='0'>"
+
"<PARAM NAME='ForeColor' VALUE='15'>"
+
"<PARAM NAME='Handshaking' VALUE='4'>"
+
"<PARAM NAME='IgnoreOnComm' VALUE='-1'>"
+
"<PARAM NAME='InBufferSize' VALUE='16384'>"
+
"<PARAM NAME='InputEcho' VALUE='-1'>"
+
"<PARAM NAME='InputLen' VALUE='0'>"
+
"<PARAM NAME='InTimeOut' VALUE='0'>"
+
"<PARAM NAME='OutTimeOut' VALUE='0'>"
+
"<PARAM NAME='LookUpSeparator' VALUE='|'>"
+
"<PARAM NAME='LookUpText' VALUE=''>"
+
"<PARAM NAME='LookUpTimeOut' VALUE='10000'>"
+
"<PARAM NAME='NullDiscard' VALUE='0'>"
+
"<PARAM NAME='OutBufferSize' VALUE='16384'>"
+
"<PARAM NAME='ParityReplace' VALUE=''>"
+
"<PARAM NAME='Rows' VALUE='25'>"
+
"<PARAM NAME='RThreshold' VALUE='0'>"
+
"<PARAM NAME='RTSEnable' VALUE='-1'>"
+
"<PARAM NAME='ScrollRows' VALUE='0'>"
+
"<PARAM NAME='SThreshold' VALUE='0'>"
+
"<PARAM NAME='XferProtocol' VALUE='5'>"
+
"<PARAM NAME='XferStatusDialog' VALUE='2'>"
+
"<PARAM NAME='Font' VALUE='Terminal'>"
+
"<PARAM NAME='StatusbarVisible' VALUE='0'>"
+
"<PARAM NAME='ToolbarVisible' VALUE='0'>"
+
"<PARAM NAME='StatusDialog' VALUE='0'>"
+
"<PARAM NAME='UseTAPI' VALUE='-1'>"
+
"<PARAM NAME='BorderStyle' VALUE='1'>"
+
"<PARAM NAME='SerialNumber' VALUE='1180-3384071-11'>"
+
"<PARAM NAME='PhoneNumber' VALUE=''>"
+
"<PARAM NAME='ProjectFilename' VALUE=''>"
+
"<PARAM NAME='CommSpyTransfer' VALUE='0'>"
+
"<PARAM NAME='AutoZModem' VALUE='-1'>"
+
"</OBJECT>";
}
#endregion
}
}
and a copy of the error in .jpg
You shouldn't call ReloadTruckLogItemsRadGrid() in the Page_Load.
I also see that you are mixing Simple Data-binding with Advanced Data-binding, you should never call DataBind() when using advanced data-binding.
What is happening in your code is that on Page_Load the grid is bound with new data, which cause new buttons to be created inside the grid. The event is fired from the old button that no longer exist and this result in event validation error.
Remove the sample binding, make sure not to rebind the grid on Page_load and the issue should be resolved.
All the best,
Vasil
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

you've saved me a ton of time on this.
once again. many many thanks
rik