Hello,
I've created a small page with a RadGrid on it. Now the problem is, that the event OnNeedDataSource is only fired if i set ViewState=false(I found this solution on an other thread). Now the grid does work, but if I also habe 2 GridButtonColumn's in the grid. Now if I click them, the OnNeedDataSource event is only called bevore the method "RadGrid1_ItemCommand". So any changes I make to the database are not shown in the grid!
aspx code:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="QU_R17_ASP_Testproject.WebForm1" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%@ Register TagPrefix="a" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI, Version=2017.2.711.45, Culture=neutral, PublicKeyToken=121fae78165ba3d4" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div class="demo-container"> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> </telerik:RadAjaxLoadingPanel> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> <telerik:RadDatePicker ID="StartDateTimePicker" runat="server" AutoPostBack="false" Culture="en-US" > <Calendar UseRowHeadersAsSelectors="False" UseColumnHeadersAsSelectors="False" EnableWeekends="True" FastNavigationNextText="<<"></Calendar> <DateInput DisplayDateFormat="yyyy-MM-dd" DateFormat="yyyy-MM-dd" LabelWidth="40%" AutoPostBack="True" runat="server"> <EmptyMessageStyle Resize="None" /> <ReadOnlyStyle Resize="None" /> <FocusedStyle Resize="None" /> <DisabledStyle Resize="None" /> <InvalidStyle Resize="None" /> <HoveredStyle Resize="None" /> <EnabledStyle Resize="None" /> </DateInput> <DatePopupButton ImageUrl="" HoverImageUrl=""></DatePopupButton> </telerik:RadDatePicker> <telerik:RadDatePicker ID="EndDateTimePicker" runat="server" AutoPostBack="false" Culture="en-US" > <Calendar UseRowHeadersAsSelectors="False" UseColumnHeadersAsSelectors="False" EnableWeekends="True" FastNavigationNextText="<<"></Calendar> <DateInput DisplayDateFormat="yyyy-MM-dd" DateFormat="yyyy-MM-dd" LabelWidth="40%" AutoPostBack="True"> <EmptyMessageStyle Resize="None" /> <ReadOnlyStyle Resize="None" /> <FocusedStyle Resize="None" /> <DisabledStyle Resize="None" /> <InvalidStyle Resize="None" /> <HoveredStyle Resize="None" /> <EnabledStyle Resize="None" /> </DateInput> <DatePopupButton ImageUrl="" HoverImageUrl=""></DatePopupButton> </telerik:RadDatePicker> <telerik:RadTextBox ID="ResultTextBox" BorderStyle="None" runat="server" Resize="Both" Width="1000px"></telerik:RadTextBox> <telerik:RadGrid RenderMode="Lightweight" ID="RadGrid2" runat="server" AllowPaging="True" AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" DataKeyNames="ID" OnItemCommand="RadGrid1_ItemCommand" OnNeedDataSource="RadGrid2_NeedDataSource" EnableViewState="False"> <MasterTableView AutoGenerateColumns="false" ShowFooter="True"> <PagerStyle AlwaysVisible="true" /> <CommandItemSettings ShowAddNewRecordButton="False" ShowRefreshButton="False" /> <Columns> <telerik:GridBoundColumn FilterControlWidth="120px" DataField="Status" HeaderText="Status" AutoPostBackOnFilter="false" CurrentFilterFunction="Contains" ShowFilterIcon="false"> <FilterTemplate> <telerik:RadComboBox RenderMode="Lightweight" ID="RadComboBoxStatus" Width="110px" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("Status").CurrentFilterValue %>' runat="server" OnClientSelectedIndexChanged="StatusIndexChanged"> <Items> <telerik:RadComboBoxItem Text="All" /> <telerik:RadComboBoxItem Text="Assigned" Value="Assigned" /> <telerik:RadComboBoxItem Text="Idle" Value="Idle" /> <telerik:RadComboBoxItem Text="CLOSED" Value="CLOSED" /> </Items> </telerik:RadComboBox> <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> <script type="text/javascript"> function StatusIndexChanged(sender, args) { var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>"); tableView.filter("Status", args.get_item().get_value(), "EqualTo"); } </script> </telerik:RadScriptBlock> </FilterTemplate> </telerik:GridBoundColumn> <telerik:GridBoundColumn FilterControlWidth="150px" DataField="System" HeaderText="System" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"> <FilterTemplate> <telerik:RadComboBox RenderMode="Lightweight" ID="RadComboBoxSystem" Width="150px" AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("System").CurrentFilterValue %>' runat="server" OnClientSelectedIndexChanged="SystemIndexChanged"> <Items> <telerik:RadComboBoxItem Text="All" /> <telerik:RadComboBoxItem Text="Printing" Value="Printing" /> <telerik:RadComboBoxItem Text="Wet" Value="Wet" /> <telerik:RadComboBoxItem Text="Assembly" Value="Assembly" /> </Items> </telerik:RadComboBox> <telerik:RadScriptBlock ID="RadScriptBlock2" runat="server"> <script type="text/javascript"> function SystemIndexChanged(sender, args) { var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>"); tableView.filter("System", args.get_item().get_value(), "EqualTo"); } </script> </telerik:RadScriptBlock> </FilterTemplate> </telerik:GridBoundColumn> <telerik:GridMaskedColumn DataField="SystemId" HeaderText="SystemId" Display="False" /> <telerik:GridMaskedColumn DataField="JobId" HeaderText="JobId" FilterControlWidth="80px" AutoPostBackOnFilter="false" CurrentFilterFunction="EqualTo" FilterDelay="2000" ShowFilterIcon="false" Display="False"> <ItemStyle HorizontalAlign="Right" /> </telerik:GridMaskedColumn> <telerik:GridBoundColumn FilterControlWidth="80px" DataField="Job" HeaderText="Job" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"> <ItemStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridMaskedColumn DataField="UniqueID" HeaderText="UniqueID" FilterControlWidth="110px" AutoPostBackOnFilter="false" CurrentFilterFunction="EqualTo" FilterDelay="1000" ShowFilterIcon="false"> </telerik:GridMaskedColumn> <telerik:GridBoundColumn FilterControlWidth="70px" DataField="Lot" HeaderText="Lot" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"> <ItemStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn FilterControlWidth="95px" DataField="LogDateTime" HeaderText="LogDateTime" ShowFilterIcon="false" AllowFiltering="False"> <ItemStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridMaskedColumn DataField="ProductID " HeaderText="ProductID " FilterControlWidth="50px" AutoPostBackOnFilter="false" CurrentFilterFunction="EqualTo" FilterDelay="2000" ShowFilterIcon="false"> <ItemStyle HorizontalAlign="Right" /> </telerik:GridMaskedColumn> <telerik:GridBoundColumn FilterControlWidth="310px" DataField="Product" HeaderText="Product" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ButtonType="PushButton" CommandName="DeleteItem" Text="DeleteItem" UniqueName="DeleteItem" HeaderText="DeleteItem"> </telerik:GridButtonColumn> <telerik:GridButtonColumn ButtonType="PushButton" CommandName="VerifyItem" Text="VerifyItem" UniqueName="VerifyItem" HeaderText="VerifyItem" > </telerik:GridButtonColumn> </Columns> <HeaderStyle Font-Bold="True" /> </MasterTableView> <ExportSettings> <Pdf PageWidth=""> </Pdf> </ExportSettings> <ClientSettings EnableRowHoverStyle="true" AllowDragToGroup="True"> <Selecting AllowRowSelect="True" /> </ClientSettings> <GroupingSettings CollapseAllTooltip="Collapse all groups" /> <SortingSettings SortedBackColor="#FFF6D6" EnableSkinSortStyles="false" /> <HeaderStyle Width="100px" /> <FilterMenu RenderMode="Lightweight" /> <HeaderContextMenu RenderMode="Lightweight" /> </telerik:RadGrid> </telerik:RadAjaxPanel> </div> </form></body></html>
aspx.cs code:
public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { StartDateTimePicker.SelectedDate = DateTime.Now.AddDays(-14); EndDateTimePicker.SelectedDate = DateTime.Now; LoadDataForRadGrid1(); } } private void LoadDataForRadGrid1() { RadGrid2.DataSource = GetDataTable(StartDateTimePicker.FocusedDate, EndDateTimePicker.FocusedDate); RadGrid2.DataBind(); } public DataTable GetDataTable(DateTime startDateTime, DateTime endDateTime) { string query = @"select * from [dbo].[ufGetList]()"; String connectionString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString; DataTable myDataTable = new DataTable(); using (SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(query, conn); conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter { SelectCommand = new SqlCommand(query, conn) }; adapter.Fill(myDataTable); conn.Close(); } return myDataTable; } protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "DeleteItem") { } } protected void RadGrid2_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { (sender as RadGrid).DataSource = GetDataTable(StartDateTimePicker.SelectedDate.Value, EndDateTimePicker.SelectedDate.Value); } }
Thanks.
