Hello all,
I have a radgrid which uses edit form templates. The grid has too many fields so I cannot use in-line edit mode (which I have a much better understanding of ) and I need to use edit form template instead. Basically when the grid opens I set every row to edit mode then I hide the databound columns. The only reason I actually have them is so I can set filters at the top of the Grid. My problem is that I need to change some textboxes in a specific "record" without doing a postback but I cannot seem to figure out how to access these textbox's.
I have a couple drop downs that when they are changed I need them to change textboxes to other values. I believe once I figure this out I will be able to figure out how to loop through all the data for my saves. Although some code for the save/add new buttons are there and also in the .vb code for update, I haven't programmed these yet so they can be ignored as it is not my concern at the moment.
Can anyone steer me in the right direction or have any insight? I will paste all my code below
Also, on render I am hiding the item template and showing only the edit template with item.Display = false. Is this the proper way to go about this as well?
I appreciate any help or direction.
Thanks,
ASPx code:
aspx.vb code:
I have a radgrid which uses edit form templates. The grid has too many fields so I cannot use in-line edit mode (which I have a much better understanding of ) and I need to use edit form template instead. Basically when the grid opens I set every row to edit mode then I hide the databound columns. The only reason I actually have them is so I can set filters at the top of the Grid. My problem is that I need to change some textboxes in a specific "record" without doing a postback but I cannot seem to figure out how to access these textbox's.
I have a couple drop downs that when they are changed I need them to change textboxes to other values. I believe once I figure this out I will be able to figure out how to loop through all the data for my saves. Although some code for the save/add new buttons are there and also in the .vb code for update, I haven't programmed these yet so they can be ignored as it is not my concern at the moment.
Can anyone steer me in the right direction or have any insight? I will paste all my code below
Also, on render I am hiding the item template and showing only the edit template with item.Display = false. Is this the proper way to go about this as well?
I appreciate any help or direction.
Thanks,
ASPx code:
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterNoBanner.master" AutoEventWireup="false" CodeFile="CropProtectionTransactions.aspx.vb" Inherits="CP_Transactions" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><asp:Content ID="Content1" ContentPlaceHolderID="cphBodyText" Runat="Server"> <div style="width: 980px; clear: both; border-bottom: 0px solid black;" > <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function CatchKeyPress(sender, args) { if (args.get_keyCode() == 13) { //Enter Key var e = args.get_domEvent().rawEvent; e.returnValue = false; e.cancelBubble = true; if (e.stopPropagation) { e.preventDefault(); e.stopPropagation(); } } if (args.get_keyCode() == 27) { //esca Key var e = args.get_domEvent().rawEvent; e.returnValue = false; e.cancelBubble = true; if (e.stopPropagation) { e.preventDefault(); e.stopPropagation(); } } if (args.get_keyCode() == 8 || args.get_keyCode() == 46) { //backspace Key var e = args.get_domEvent().rawEvent; e.returnValue = false; e.cancelBubble = true; if (e.stopPropagation) { e.preventDefault(); e.stopPropagation(); } } } function gridCommand(sender, args) { var command = args.get_commandName(); if (command == "DeleteRow" || command == "CopyPaste" || command == "SaveChanges" || command == "CancelChanges" || command == "Sort" || command == "Page" || command == "Filter" || command == "ChangePageSize") { //cancel the additional check in body.onunload window.editInProgress = false; } } function gridCommandCustom(evt) { var command = evt if (command == "DeleteRow" || command == "CopyPaste" || command == "SaveChanges" || command == "CancelChanges" || command == "Sort" || command == "Page" || command == "Filter" || command == "ChangePageSize" || command == "AddRecord") { //cancel the additional check in body.onunload window.editInProgress = false; } } function verifyCancelChanges() { if (window.editInProgress) { //alert(window.editInProgress.tostring); $find("<%=RadAjaxManager1.ClientID %>").ajaxRequest(); } } function updateEdit() { window.editInProgress = true; } window.onbeforeunload = function (evt) { // alert(window.editInProgress); verifyCancelChanges(); } function ddlProductChanged(sender, eventArgs) { //This is where I need to update the other two fields } </script> </telerik:RadCodeBlock> <telerik:RadWindowManager runat="server" ID="RadWindowManager1"> </telerik:RadWindowManager> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="Default,Select,Textbox" EnableRoundedCorners="false" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="Label1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="16px" Width="16px" /><asp:Label id="Label1" runat="server" Text="asdf" Visible="false"></asp:Label> <telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" ShowStatusBar="True" AllowFilteringByColumn="True" AllowSorting="True" GridLines="None" runat="server" AutoGenerateColumns="False" CellSpacing="0" AllowMultiRowEdit="True" Height="800px" Width="98%" PageSize="3" AllowPaging="True"> <ClientSettings> <Selecting AllowRowSelect="True"></Selecting><ClientEvents OnKeyPress="CatchKeyPress"></ClientEvents> <Scrolling AllowScroll="true" UseStaticHeaders="true"></Scrolling> </ClientSettings> <MasterTableView EditMode="EditForms" DataKeyNames="TransactionID" DataSourceID="SqlDataSource1" CommandItemDisplay="Top" PagerStyle-AlwaysVisible="true" InsertItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage" > <CommandItemTemplate> <table width="100%"> <tr> <td align="right"><asp:LinkButton ID="btnInsertProduct" OnClientClick="gridCommandCustom('AddRecord')" runat="server" CommandName="InsertProduct" Visible="true"><img style="border:0px" alt="" src="Images/AddRecord.gif" />- Add New Product</asp:LinkButton> <asp:LinkButton ID="btnCancelChanges" runat="server" OnClientClick="gridCommandCustom('CancelChanges');" CommandArgument="CancelChanges" CommandName="CancelChanges" Visible="true"><img style="border:0px" alt="" src="Images/Cancel.gif" />- Clear all Changes </asp:LinkButton> <asp:LinkButton ID="btnSaveChanges" runat="server" CommandArgument="SaveChanges" CommandName="SaveChanges" OnClientClick="gridCommandCustom('SaveChanges');" Visible="true"><img style="border:0px" alt="" src="Images/Update.gif" />- Save All changes</asp:LinkButton> </td> </tr> </table> </CommandItemTemplate><CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings><RowIndicatorColumn Visible="false" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn><ExpandCollapseColumn Visible="false" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="TransactionID" FilterControlAltText="Filter TransactionID column" HeaderText="TransactionID" SortExpression="TransactionID" UniqueName="TransactionID" DataType="System.Int32" ReadOnly="True" Visible="false"> </telerik:GridBoundColumn> <telerik:GridDropDownColumn UniqueName="MemberID" SortExpression="MemberID" HeaderText="Company Name" DataSourceID="dsMembers" DataField="MemberID" ListTextField="CompanyName" ListValueField="MemberID" AllowAutomaticLoadOnDemand="false" DropDownControlType="radcombobox" FilterControlWidth="150px" autopostbackonfilter="true" EmptyListItemText="Select ..." showfiltericon="false" > <HeaderStyle Width="125px" /><ItemStyle Width="125px" /> <FilterTemplate> <telerik:RadComboBox ID="RadComboBoxMembers" DataSourceID="dsMembers" DataTextField="CompanyName" DataValueField="MemberID" Height="200px" AppendDataBoundItems="true" MarkFirstMatch="true" AllowCustomText="false" SelectedValue='<%# TryCast(Container,GridItem).OwnerTableView.GetColumn("MemberID").CurrentFilterValue %>' runat="server" OnClientSelectedIndexChanged="MemberIndexChanged" Width="90%" DropDownWidth="350px"> <Items> <telerik:RadComboBoxItem Text="All" /> </Items> </telerik:RadComboBox> <telerik:RadScriptBlock ID="RadScriptBlockMembers" runat="server"> <script type="text/javascript"> function MemberIndexChanged(sender, args) { var tableView = $find("<%# TryCast(Container,GridItem).OwnerTableView.ClientID %>"); tableView.filter("MemberID", args.get_item().get_value(), "EqualTo"); } </script> </telerik:RadScriptBlock> </FilterTemplate> </telerik:GridDropDownColumn> <telerik:GridTemplateColumn DataField="ShipTo" FilterControlAltText="Filter ShipTo column" HeaderText="Ship To" ShowFilterIcon="false" UniqueName="ShipTo" SortExpression="ShipTo" ItemStyle-Height="0px"> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="PurchaseDate" FilterControlAltText="Filter PurchaseDate column" HeaderText="Purchase Date " ShowFilterIcon="false" UniqueName="PurchaseDate" SortExpression="PurchaseDate" ItemStyle-Height="0px"> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="DistributorName" FilterControlAltText="Filter DistributorName column" HeaderText="Distributor Name" ShowFilterIcon="false" UniqueName="DistributorName" SortExpression="DistributorName" ItemStyle-Height="0px"> </telerik:GridTemplateColumn> <telerik:GridDropDownColumn UniqueName="CPProductID" SortExpression="CPProductID" HeaderText="Supplier" DataSourceID="dsProducts" DataField="CPProductID" ListTextField="Product" ListValueField="CPProductID" AllowAutomaticLoadOnDemand="false" DropDownControlType="radcombobox" FilterControlWidth="150px" autopostbackonfilter="true" EmptyListItemText="Select ..." showfiltericon="false" > <HeaderStyle Width="225px" /><ItemStyle Width="225px" /> <FilterTemplate> <telerik:RadComboBox ID="RadComboboxProduct" DataSourceID="dsProducts" DataTextField="Product" DataValueField="CPProductID" Height="200px" AppendDataBoundItems="true" MarkFirstMatch="true" AllowCustomText="false" SelectedValue='<%# TryCast(Container,GridItem).OwnerTableView.GetColumn("CPProductID").CurrentFilterValue %>' runat="server" OnClientSelectedIndexChanged="ProductIndexChanged"> <Items> <telerik:RadComboBoxItem Text="All" /> </Items> </telerik:RadComboBox> <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> <script type="text/javascript"> function ProductIndexChanged(sender, args) { var tableView = $find("<%# TryCast(Container,GridItem).OwnerTableView.ClientID %>"); tableView.filter("CPProductID", args.get_item().get_value(), "EqualTo"); } </script> </telerik:RadScriptBlock> </FilterTemplate> </telerik:GridDropDownColumn> </Columns> <EditFormSettings EditFormType="Template" > <FormTemplate> <div><br /> <table style="margin-left: 5px;" width="99%"> <tr valign="top"> <td width="150px"><asp:Label ID="lblCompanyName" runat="server" Text="Member" Font-Bold="true"></asp:Label></td> <td width="120px"><asp:Label ID="lblShipTop" runat="server" Text="Ship To" Font-Bold="true"></asp:Label></td> <td ><asp:Label ID="lblPurchaseDate" runat="server" Text="Purchase Date" Font-Bold="true"></asp:Label></td> </tr> <tr valign="top"> <td> <telerik:RadComboBox ID="ddlMember" runat="server" AppendDataBoundItems="true" AutoPostBack="true" EmptyMessage="Select..." DataSourceID="dsMembers" DataTextField="CompanyName" DataValueField="MemberID" SelectedValue='<%# Bind("MemberID") %>' MarkFirstMatch="true" DropDownWidth="400px" HighlightTemplatedItems="true" Width="200px" Height="250px" OnSelectedIndexChanged="ddlMember_SelectedIndexChanged" ClientEvents-OnKeyPress="KeyPressed" EnableLoadOnDemand="false" > <HeaderTemplate> <ul> <li class="colCompanyName">Company Name</li> <li class="colCPMember">CP Member</li> </ul> </HeaderTemplate> <ItemTemplate> <ul> <li class="colCompanyName"><%# Eval("CompanyName")%></li> <li class="colCPMember" ><%# Eval("CPMember")%></li> </ul> </ItemTemplate> </telerik:RadComboBox></td> <td> <telerik:RadComboBox ID="ddlShipTo" runat="server" AppendDataBoundItems="false" datatextfield="ShipTo" DataValueField="ShipToID" MarkFirstMatch="true" DropDownWidth="200px" HighlightTemplatedItems="true" Width="200px" ClientEvents-OnKeyPress="KeyPressed" ></telerik:RadComboBox> </td> <td><telerik:RadDatePicker ID="txtPurchaseDate" runat="server" ClientEvents-OnKeyPress="KeyPressed" Width="140px" AutoPostBack="false" DateInput-EmptyMessage="" MinDate="01/01/1000" MaxDate="01/01/3000" SelectedDate='<%# Bind("PurchaseDate") %> '> <Calendar ID="Calendar1" runat="server" ClientEvents-OnKeyPress="KeyPressed"> <SpecialDays> <telerik:RadCalendarDay Repeatable="Today" ItemStyle-CssClass="rcToday" /> </SpecialDays> </Calendar> </telerik:RadDatePicker></td> </tr> <tr> <td colspan="3" align="center"> <table width="100%" border="0" cellpadding="1" cellspacing="0"> <tr> <td width="175px" align="left"><asp:Label ID="Label8" runat="server" Text="Distributor" Font-Bold="true"></asp:Label></td> <td width="100px" align="left"><asp:Label ID="Label9" runat="server" Text="Invoice #" Font-Bold="true"></asp:Label></td> <td width="175px" align="left"><asp:Label ID="Label16" runat="server" Text="Product" Font-Bold="true"></asp:Label></td> <td width="75px" align="left"><asp:Label ID="Label17" runat="server" Text="Size" Font-Bold="true"></asp:Label></td> <td width="150px" align="left"><asp:Label ID="Label18" runat="server" Text="Manufacturer" Font-Bold="true"></asp:Label></td> <td width="75px" align="left"><asp:Label ID="Label19" runat="server" Text="Quantity" Font-Bold="true"></asp:Label></td> <td width="75px" align="left"><asp:Label ID="Label20" runat="server" Text="Price" Font-Bold="true"></asp:Label></td> <td width="75px" align="left"><asp:Label ID="Label21" runat="server" Text="Extension" Font-Bold="true"></asp:Label></td> </tr> </table> </td> </tr> <tr> <td colspan="3" align="center"> <table width="100%" border="0" cellpadding="1" cellspacing="0"> <tr> <td width="175px" align="left"><telerik:RadComboBox ID="ddlDistributors" runat="server" AppendDataBoundItems="false" AutoPostBack="false" EmptyMessage="Select..." DataSourceID="dsDistributors" DataTextField="DistributorName" DataValueField="CPDistributorID" SelectedValue='<%# Bind("CPDistributorID") %>' MarkFirstMatch="true" DropDownWidth="200px" HighlightTemplatedItems="true" Width="175px" Height="250px" ClientEvents-OnKeyPress="KeyPressed" ></telerik:RadComboBox> </td> <td width="100px" align="left"> <telerik:RadTextBox ID="txtInvoiceNumber" Text='<%# Bind("InvoiceNumber") %>' runat="server" width="90px"></telerik:RadTextBox> </td> <td width="175px" align="left"><telerik:RadComboBox ID="ddlProduct" runat="server" AppendDataBoundItems="false" AutoPostBack="false" EmptyMessage="Select..." DataSourceID="dsProducts" DataTextField="Product" DataValueField="CPProductID" SelectedValue='<%# Bind("CPProductID") %>' MarkFirstMatch="true" DropDownWidth="500px" HighlightTemplatedItems="true" Width="175px" Height="250px" ClientEvents-OnKeyPress="KeyPressed" OnItemDataBound="ddlProduct_ItemDataBound" EnableLoadOnDemand="false" > <HeaderTemplate> <ul> <li class="colProductName">Product Name</li> <li class="colSize">Pkg Size</li> <li class="colSuppleer">Manufacturer</li> </ul> </HeaderTemplate> <ItemTemplate> <ul> <li class="colProductName"><%# Eval("Product")%></li> <li class="colSize" ><%# Eval("Size")%></li> <li class="colSuppleer"><%# Eval("SupplierName")%></li> </ul> </ItemTemplate> </telerik:RadComboBox></td> <td width="75px" align="left"><telerik:RadTextBox ID="txtSize" runat="server" ReadOnly="true" Width="75px"></telerik:RadTextBox></td> <td width="150px" align="left"><telerik:RadTextBox ID="txtManufacturer" runat="server" ReadOnly="true" Width="150px"></telerik:RadTextBox></td> <td width="75px" align="left"><telerik:RadNumericTextBox incrementsettings-interceptarrowskeys="false" incrementsettings-interceptmousewheel="false" ID="txtQuantity" NumberFormat-DecimalDigits="3" runat="server" Type="number" width="100%" NumberFormat-GroupSeparator="" invalidstyleduration="100" Dbvalue='<%# Bind("Quantity") %>' > </telerik:RadNumericTextBox></td> <td width="75px" align="left"><telerik:RadNumericTextBox incrementsettings-interceptarrowskeys="false" incrementsettings-interceptmousewheel="false" ID="txtPrice" runat="server" Type="currency" width="100%" EmptyMessageStyle-Width="70px" Dbvalue='<%# Bind("Price") %>'></telerik:RadNumericTextBox></td> <td width="75px" align="left"><telerik:RadNumericTextBox incrementsettings-interceptarrowskeys="false" incrementsettings-interceptmousewheel="false" ID="txtExtension" runat="server" Type="currency" width="100%" EmptyMessageStyle-Width="70px" Dbvalue='<%# Bind("Extension") %>' NumberFormat-NegativePattern="$- n"></telerik:RadNumericTextBox></td> </tr> </table> </td> </tr> </table><br /></div> </FormTemplate></EditFormSettings></MasterTableView> <ClientSettings AllowKeyboardNavigation="false"> <ClientEvents OnKeyPress="CatchKeyPress" OnCommand="gridCommand" ></ClientEvents> <Selecting AllowRowSelect="true" /> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <GroupingSettings CaseSensitive="false" /> <EditItemStyle /> <AlternatingItemStyle BackColor="Aqua" /> <FilterMenu EnableImageSprites="False"></FilterMenu> </telerik:RadGrid> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="select TransactionID, a.MemberID,a.ShipToID, PurchaseDate, a.CPDistributorID, InvoiceNumber,a.CPProductID, Product, Quantity, Price, Extension, NetPricing, DPS,e.CPSupplierID from tblCropProtectionTransactions a join tblMembers b on a.MemberID = b.MemberID join tblMembershipto c on a.ShipToID = c.ShipToId join tblCropProtectionDistributors d on a.CPDistributorID = d.CPDistributorID join tblCropProtectionProducts e on a.CPProductID = e.CPProductID join tblCropProtectionSuppliers f on e.CPSupplierID = f.CPSupplierID where DateDiff(month,PurchaseDate,getdate()) < 24 ORDER BY PurchaseDate, CompanyName" UpdateCommand="UPDATE dbo.tblCropProtectionDistributors SET DistributorName = @DistributorName WHERE (CPDistributorID = @CPDistributorID)" InsertCommand="INSERT INTO dbo.tblCropProtectionDistributors(DistributorName) VALUES ( @DistributorName)"> <InsertParameters> <asp:Parameter Name="DistributorName" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="CPDistributorID" /> <asp:Parameter Name="DistributorName" /> </UpdateParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="dsSupplier" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="SELECT CPSupplierID, SupplierName FROM dbo.tblCropProtectionSuppliers" > </asp:SqlDataSource> <asp:SqlDataSource ID="dsProducts" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="SELECT CPProductID,Product,Size,SupplierName from tblCropProtectionProducts a join tblCropProtectionSuppliers b on a.CPSupplierID = b.CPSupplierIDorder by PRoduct,Size,SupplierName" > </asp:SqlDataSource> <asp:SqlDataSource ID="dsDistributors" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="select CPDistributorID, DistributorName from tblCropProtectionDistributors order by DistributorName" > </asp:SqlDataSource> <asp:SqlDataSource ID="dsMembers" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="SELECT distinct tblMembers.MemberId, tblMembers.CompanyName, tblMembers.Email, case [CropProtection] when 1 then 'Yes' when 0 then 'No' end AS [CPMember] FROM tblMembers ORDER BY tblMembers.CompanyName" > </asp:SqlDataSource> <asp:SqlDataSource ID="dsShipTo" runat="server" ConnectionString="<%$ ConnectionStrings:csPrairielandAg %>" ProviderName="<%$ ConnectionStrings:csPrairielandAg.ProviderName %>" SelectCommand="SELECT ShipToId, ShipTo from tblMemberShipTo where MemberID = @MemberID order by IsDefault desc, ShipTo asc"> <SelectParameters> <asp:Parameter Name="MemberID" /> </SelectParameters> </asp:SqlDataSource> <br /> </div></asp:Content>aspx.vb code:
Imports SystemImports System.DataImports System.ConfigurationImports System.CollectionsImports System.WebImports System.Web.SecurityImports System.Web.UIImports System.Web.UI.WebControlsImports System.Web.UI.WebControls.WebPartsImports System.Web.UI.HtmlControlsImports Telerik.Web.UIImports System.Data.OleDbImports System.Data.SqlClientImports System.Collections.GenericImports System.Data.CommonImports System.DiagnosticsImports System.ComponentModelImports System.Web.SessionStateImports System.Web.MailImports System.Net.MailImports System.XmlPartial Public Class CP_Transactions Inherits System.Web.UI.Page Dim strMode As String = "" Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load ' RadGrid1.Enabled = True RadGrid1.Visible = True Session("Refresh") = "Yes" End Sub Protected Sub RadGrid1_ItemCommand(sender As Object, e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand If e.CommandName = "RefreshGrid" Then strMode = "Refresh" e.Item.OwnerTableView.Rebind() ElseIf e.CommandName = "SaveChanges" Then RadGrid1_UpdateCommand(sender, e) e.Item.OwnerTableView.Rebind() strMode = "Save" ElseIf e.CommandName = "CancelChanges" Then strMode = "Cancel" ' RadGrid1.EditIndexes.Clear() RadGrid1.MasterTableView.IsItemInserted = False For Each column As GridColumn In RadGrid1.MasterTableView.Columns column.CurrentFilterFunction = GridKnownFunction.NoFilter column.CurrentFilterValue = String.Empty Next RadGrid1.MasterTableView.FilterExpression = String.Empty e.Item.OwnerTableView.Rebind() ElseIf e.CommandName = "Sort" Then strMode = "Sort" ElseIf e.CommandName = "Page" Then strMode = "Page" ElseIf e.CommandName = "ChangePageSize" Then RadGrid1.EditIndexes.Clear() End If If e.CommandName = "DeleteRow" Then 'Dim image As ImageButton = DirectCast(e.CommandSource, ImageButton) Dim strProductID = e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("CPProductID").ToString 'strProductID = Replace(strProductID, "Delete ", "") Try Dim deleteQuery As String = "Delete from tblCropProtectionProducts where CPProductID='" & strProductID & "'" Dim strConn As String = ConfigurationManager.ConnectionStrings("csPrairielandAg").ConnectionString Using connection As New SqlConnection(strConn) connection.Open() Using Command As New SqlCommand(deleteQuery, connection) Command.CommandType = Data.CommandType.Text Command.CommandText = deleteQuery Command.ExecuteNonQuery() SetMessage("Product deleted") End Using connection.Close() End Using RadGrid1.Rebind() Catch ex As Exception If InStr(ex.Message, "The DELETE statement conflicted with the REFERENCE constraint", CompareMethod.Text) > 0 Then SetMessage("Cannot delete this Product as it is currently tied to a transaction.") Else SetMessage(ex.Message) End If End Try End If If e.CommandName = "InsertProduct" Then RadGrid1.MasterTableView.IsItemInserted = True RadGrid1.Rebind() End If End Sub Protected Sub RadGrid1_PageIndexChanged(sender As Object, e As Telerik.Web.UI.GridPageChangedEventArgs) Handles RadGrid1.PageIndexChanged If RadGrid1.Items.Item(1).IsInEditMode = True Then e.Item.FireCommandEvent("Update", String.Empty) End If End Sub Protected Sub RadGrid1_PreRender(sender As Object, e As System.EventArgs) Handles RadGrid1.PreRender If Session("Refresh") = "No" Then Exit Sub End If For i As Integer = 0 To RadGrid1.Items.Count RadGrid1.EditIndexes.Add(i) Next RadGrid1.Rebind() For Each item As GridDataItem In RadGrid1.MasterTableView.Items If item.IsDataBound Then item.Display = False End If Next Label1.Visible = "False" End Sub Protected Sub RadGrid1_UpdateCommand(sender As Object, e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.UpdateCommand If RadGrid1.MasterTableView.IsItemInserted = True Then Dim dataInsert As GridDataItem = e.Item.OwnerTableView.GetInsertItem Dim txtSupplier As RadComboBox = DirectCast(dataInsert("CPSupplierID").Controls(0), RadComboBox) Dim txtProduct As TextBox = DirectCast(dataInsert("Product").Controls(0), TextBox) Dim txtSize As TextBox = DirectCast(dataInsert("Size").Controls(0), TextBox) SqlDataSource1.InsertParameters("CPSupplierID").DefaultValue = txtSupplier.SelectedValue SqlDataSource1.InsertParameters("Size").DefaultValue = txtSize.Text SqlDataSource1.InsertParameters("Product").DefaultValue = txtProduct.Text Try SqlDataSource1.Insert() RadGrid1.MasterTableView.IsItemInserted = False Label1.Visible = False ' RadGrid1.EditIndexes.Clear() Catch ex As Exception SetMessage(Server.HtmlEncode("Unable to update Product. Reason: " + ex.StackTrace).Replace("'", "'").Replace(vbCrLf, "<br />")) End Try End If If RadGrid1.Items.Item(1).IsInEditMode = True Then For Each dataItem As GridDataItem In RadGrid1.MasterTableView.Items Dim newValues As New Hashtable() Dim eeditedItem As GridEditableItem = TryCast(e.Item, GridEditableItem) Dim intProductID As Integer = dataItem.OwnerTableView.DataKeyValues(dataItem.ItemIndex)("CPProductID") RadGrid1.MasterTableView.ExtractValuesFromItem(newValues, dataItem) SqlDataSource1.UpdateParameters("CPProductID").DefaultValue = intProductID SqlDataSource1.UpdateParameters("CPSupplierID").DefaultValue = newValues("CPSupplierID") SqlDataSource1.UpdateParameters("Product").DefaultValue = newValues("Product") SqlDataSource1.UpdateParameters("Size").DefaultValue = newValues("Size") Try SqlDataSource1.Update() RadGrid1.MasterTableView.IsItemInserted = False Label1.Visible = False ' RadGrid1.EditIndexes.Clear() Catch ex As Exception SetMessage(Server.HtmlEncode("Unable to update Product. Reason: " + ex.StackTrace).Replace("'", "'").Replace(vbCrLf, "<br />")) End Try Next Else Exit Sub End If End Sub Private Sub SetMessage(ByVal message As String) Label1.Text = String.Format("<span style='color:red'>{0}</span>", message) Label1.Visible = True End Sub Protected Sub ddlProduct_ItemDataBound(sender As Object, e As RadComboBoxItemEventArgs) Dim row As DataRowView = TryCast(e.Item.DataItem, DataRowView) e.Item.Attributes("Product") = row("Product").ToString() e.Item.Attributes("Size") = row("Size").ToString() e.Item.Attributes("SupplierName") = row("SupplierName").ToString() 'e.Item.Attributes.Add("onchange", "return ddlProductChanged('" + e.Item.ClientID + "',Null,Null, event);") End Sub Protected Sub ddlProduct_SelectedIndexChanged(o As Object, e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Dim editedItem As GridEditableItem = TryCast(TryCast(o, RadComboBox).NamingContainer, GridEditableItem) Dim productCombo As RadComboBox = TryCast(o, RadComboBox) 'Dim As RadComboBox = TryCast(editedItem.FindControl("ddlShipTo"), RadComboBox) 'ddlShipTo.Text = "" 'ddlShipTo.DataSource = LoadShipTo(e.Value) 'ddlShipTo.DataBind() Dim txtSize As RadTextBox = TryCast(editedItem.FindControl("txtSize"), RadTextBox) Dim txtManufacturer As RadTextBox = TryCast(editedItem.FindControl("txtManufacturer"), RadTextBox) txtSize.Text = productCombo.SelectedItem.Attributes("Size").ToString txtManufacturer.Text = productCombo.SelectedItem.Attributes("SupplierName").ToString Session("Refresh") = "No" End Sub Protected Sub ddlMember_SelectedIndexChanged(o As Object, e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Dim editedItem As GridEditableItem = TryCast(TryCast(o, RadComboBox).NamingContainer, GridEditableItem) Dim membersCombo As RadComboBox = TryCast(o, RadComboBox) Dim ddlShipTo As RadComboBox = TryCast(editedItem.FindControl("ddlShipTo"), RadComboBox) ddlShipTo.Text = "" ddlShipTo.DataSource = LoadShipTo(e.Value) ddlShipTo.DataBind() Session("Refresh") = "No" End Sub Protected Function LoadShipTo(MemberID As String) As DataTable Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("csPrairielandAg").ConnectionString) 'select a country based on the continentID Dim adapter As New SqlDataAdapter("SELECT ShipToId, ShipTo from tblMemberShipTo where MemberId=@MemberID order by IsDefault desc, ShipTo asc", connection) adapter.SelectCommand.Parameters.AddWithValue("@MemberID", MemberID) Dim dt As New DataTable() adapter.Fill(dt) Return dt End Function Protected Sub RadGrid1_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound If TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode Then Dim editedItem As GridEditableItem = TryCast(e.Item, GridEditableItem) If e.Item.OwnerTableView.IsItemInserted Then Dim memberCombo As RadComboBox = TryCast(editedItem.FindControl("ddlMember"), RadComboBox) Dim shiptoCombo As RadComboBox = TryCast(editedItem.FindControl("ddlShipto"), RadComboBox) shiptoCombo.DataSource = LoadShipTo(memberCombo.SelectedValue) shiptoCombo.DataBind() Else Dim dataSourceRow As DataRowView = DirectCast(e.Item.DataItem, DataRowView) Dim memberCombo As RadComboBox = TryCast(editedItem.FindControl("ddlMember"), RadComboBox) Dim shiptoCombo As RadComboBox = TryCast(editedItem.FindControl("ddlShipto"), RadComboBox) shiptoCombo.DataSource = LoadShipTo(memberCombo.SelectedValue) shiptoCombo.DataBind() shiptoCombo.SelectedValue = dataSourceRow("ShipToID").ToString() Dim productCombo As RadComboBox = TryCast(editedItem.FindControl("ddlProduct"), RadComboBox) Dim txtSize As RadTextBox = TryCast(editedItem.FindControl("txtSize"), RadTextBox) Dim txtManufacturer As RadTextBox = TryCast(editedItem.FindControl("txtManufacturer"), RadTextBox) txtSize.Text = productCombo.SelectedItem.Attributes("Size").ToString txtManufacturer.Text = productCombo.SelectedItem.Attributes("SupplierName").ToString End If End If End SubEnd Class