2014-10-27 5 views
0

У меня есть страница с Radgrid. Все нормально, пока я не реализую настраиваемый фильтр и не устанавливаю фильтр по умолчанию в зависимости от сеанса. Я делаю всплывающую подсказку о заголовке столбца, который позволяет пользователю выбирать элемент для фильтров radgrid.Фильтр по умолчанию для Radgrid Telerik с номером столбца

enter image description here

Все столбцов работать хорошо, кроме столбца "TotalAmount". Ничего не происходит, когда я нажимаю элемент на всплывающей подсказке.

enter image description here

код установлен фильтр по умолчанию, когда пользователь нажимает на элемент всплывающей подсказки (Radgrid_PreRender):

if (!IsPostBack) 
     { 
      if (Session["FilterParams"] != null) 
      { 
       ParamsForGrid prForGrid = new ParamsForGrid(); 
       Filters filter = new Filters(); 
       filter = prForGrid.GetFilter(); 
       rgOrders.MasterTableView.FilterExpression = "([" + filter.columnName + "] LIKE \'%" + filter.searchStrings + "%\') "; 
       GridColumn column = rgOrders.MasterTableView.GetColumnSafe(filter.columnName); 
       column.CurrentFilterFunction = GridKnownFunction.Contains; 
       column.CurrentFilterValue = filter.searchStrings; 
       rgOrders.MasterTableView.Rebind(); 
      } 

     } 

Как это исправить. Я использую систему управления версиями Telerik 2012.3.1016.35

Update: Изображения ниже шоу экрана после того, как я нажал на подсказке, пары разослало фильтр radgrid, когда я отладка, FilterExpression получить значение точно, radgrid также перепривязывает, но не фильтр.

enter image description here

Update 2 "Код подсказка":

На этой странице я использовал 2 RadtooltipManager, один для рядов сетки и один для заголовка столбцов.

Дизайн Вид:

 <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
    </telerik:RadScriptManager> 
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> 
    </telerik:RadAjaxLoadingPanel> 
    <telerik:RadWindowManager ID="RadWindowManager1" runat="server"> 
    </telerik:RadWindowManager> 

    <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> 
     <div> 
      Keyword:<telerik:RadTextBox ID="rtbSearch" runat="server" Skin="Web20" Width="150px" EmptyMessage="Enter customer name..." ViewStateMode="Enabled"></telerik:RadTextBox> 
      <telerik:RadComboBox ID="rcbProvince" Skin="Web20" runat="server" OnDataBound="rcbProvince_DataBound"> 
      </telerik:RadComboBox> 
      Start 
     <telerik:RadDatePicker ID="rdpStartDay" runat="server" ShowPopupOnFocus="True"></telerik:RadDatePicker> 
      End 
     <telerik:RadDatePicker ID="rdpEndDay" runat="server" ShowPopupOnFocus="True"></telerik:RadDatePicker> 
      <telerik:RadButton ID="rbSearch" Text="Search" OnClientClicked="checkDate" runat="server" Skin="Web20" OnClick="rbSearch_Click"></telerik:RadButton> 
      <div class="blank"></div> 
      <div> 
       <telerik:RadGrid ID="rgOrders" EnableLinqExpressions="false" AllowPaging="True" runat="server" AllowSorting="True" AllowMultiRowSelection="True" AutoGenerateColumns="False" GridLines="None" OnItemCreated="rgOrders_ItemCreated" OnPreRender="rgOrders_PreRender" OnItemDataBound="rgOrders_ItemDataBound" OnItemCommand="rgOrders_ItemCommand" PageSize="5" Skin="Web20" OnPageIndexChanged="rgOrders_PageIndexChanged" OnSortCommand="rgOrders_SortCommand" OnNeedDataSource="rgOrders_NeedDataSource"> 
        <GroupingSettings CaseSensitive="false" /> 
        <MasterTableView DataKeyNames="CustomerId" AllowMultiColumnSorting="true" AllowFilteringByColumn="true"> 
         <SortExpressions> 
          <telerik:GridSortExpression FieldName="OrderDate" SortOrder="Descending" /> 
         </SortExpressions> 
         <CommandItemSettings ExportToPdfText="Export to Pdf" /> 
         <Columns> 
          <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn"> 
          </telerik:GridClientSelectColumn> 
          <telerik:GridTemplateColumn AllowFiltering="false" HeaderText="No."> 
           <ItemTemplate> 
            <%# (Container.DataSetIndex+1).ToString() %> 
           </ItemTemplate> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle Font-Bold="True" HorizontalAlign="Center" /> 
          </telerik:GridTemplateColumn> 
          <telerik:GridTemplateColumn AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" DataField="Name" HeaderText="Customer Name" SortExpression="Name" UniqueName="Name"> 
           <ItemTemplate> 
            <asp:HyperLink ID="targetControl" runat="server" NavigateUrl='<%# Eval("OrderId","UpdateOrders.aspx?OrderId={0}") %>' Text='<%# Eval("Name") %>'></asp:HyperLink> 
           </ItemTemplate> 
          </telerik:GridTemplateColumn> 
          <telerik:GridBoundColumn DataField="OrderId" HeaderText="Order No" CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" UniqueName="OrderID"> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle Font-Bold="True" HorizontalAlign="Center" /> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="OrderDate" HeaderText="Order Date" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false" UniqueName="OrderDate"> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle HorizontalAlign="Center" /> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="PaymentTypeName" CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" ShowFilterIcon="false" HeaderText="Payment Type" UniqueName="PaymentTypeName"> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle HorizontalAlign="Center" /> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="TotalAmount" DataType="System.String" HeaderText="TotalAmount" CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" ShowFilterIcon="false" UniqueName="TotalAmount"> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle Font-Bold="True" HorizontalAlign="Center" /> 
          </telerik:GridBoundColumn> 
          <telerik:GridTemplateColumn DataField="IsClosed" ShowFilterIcon="false" CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" HeaderText="IsClosed" SortExpression="IsClosed" UniqueName="IsClosed"> 
           <ItemTemplate> 
            <asp:Label ID="Label11" runat="server" Text='<%# Eval("IsClosed") %>'></asp:Label> 
           </ItemTemplate> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle Font-Bold="True" HorizontalAlign="Center" /> 
          </telerik:GridTemplateColumn> 
          <telerik:GridTemplateColumn HeaderText="#" AllowFiltering="false"> 
           <ItemTemplate> 
            <asp:Button ID="btnXoa" runat="server" CommandArgument='<%# Eval("OrderId") %>' CommandName="DeleteOrder" OnClientClick="if(!confirm('Are you sure to delete?')) return false;" Text="X" /> 
           </ItemTemplate> 
           <HeaderStyle HorizontalAlign="Center" /> 
           <ItemStyle HorizontalAlign="Center" /> 
          </telerik:GridTemplateColumn> 
         </Columns> 
        </MasterTableView> 
        <FilterItemStyle HorizontalAlign="Center" /> 
        <PagerStyle HorizontalAlign="Right" PageButtonCount="5" FirstPageText="First" FirstPageToolTip="" LastPageText="Last" LastPageToolTip="" NextPagesToolTip="" NextPageText="Next" NextPageToolTip="" PageSizeLabelText="" PrevPagesToolTip="" PrevPageText=" Previous" PrevPageToolTip="" EnableSEOPaging="True" /> 
        <ClientSettings EnableRowHoverStyle="true"> 
         <Selecting AllowRowSelect="True"></Selecting> 
        </ClientSettings> 
        <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Web20" EnableImageSprites="True"> 
        </HeaderContextMenu> 
       </telerik:RadGrid> 
      </div> 
      <div class="blank"></div> 
      <div class="left"> 
       <asp:Button ID="btnDelete" runat="server" OnClientClick="if(!confirm('Are you sure to delete?')) return false;" Text="Delete" OnClick="btnDelete_Click" /> 
       <telerik:RadButton ID="rbtnCLose" runat="server" Text="Close" Skin="Web20" OnClick="rbtnCLose_Click"></telerik:RadButton> 
      </div> 
     </div> 
    </telerik:RadAjaxPanel> 
    <telerik:RadToolTipManager ID="RadToolTipManager1" OffsetY="-1" HideEvent="LeaveTargetAndToolTip" 
     Width="250" Height="100" runat="server" OnAjaxUpdate="OnAjaxUpdate" RelativeTo="Element" 
     Position="MiddleRight"> 
    </telerik:RadToolTipManager> 
    <telerik:RadToolTipManager ID="RadToolTipManager2" ShowDelay="1000" HideDelay="500" OffsetY="-1" HideEvent="ManualClose" 
     Width="180" Height="150" runat="server" OnAjaxUpdate="OnAjaxUpdateHeader" RelativeTo="Element" 
     Position="TopCenter"> 
    </telerik:RadToolTipManager> 

код позади:

protected void OnAjaxUpdate(object sender, ToolTipUpdateEventArgs e) 
    { 
     this.UpdateToolTip(e.Value, e.UpdatePanel); 
    } 
    protected void OnAjaxUpdateHeader(object sender, ToolTipUpdateEventArgs e) 
    { 
     this.UpdateToolTipHeader(e.Value, e.UpdatePanel); 
    } 
    private void UpdateToolTip(string elementID, UpdatePanel panel) 
    { 
     Control ctrl = Page.LoadControl("controls/CustomerDetails.ascx"); 
     ctrl.ID = "UcCustomerDetails"; 
     panel.ContentTemplateContainer.Controls.Add(ctrl); 
     controls.CustomerDetails details = (controls.CustomerDetails)ctrl; 
     details.CustomerId = elementID; 
    } 
    private void UpdateToolTipHeader(string elementID, UpdatePanel panel) 
    { 
     Control ctrl = Page.LoadControl("controls/TooltipCategory.ascx"); 
     ctrl.ID = "UcTooltipCategory"; 
     panel.ContentTemplateContainer.Controls.Add(ctrl); 
     controls.TooltipCategory details = (controls.TooltipCategory)ctrl; 
     details.HeaderText = elementID; 
    } 

На ItemDataBound из Radgrid:

protected void rgOrders_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem) 
     { 
      Control target = e.Item.FindControl("targetControl"); 
      if (!Object.Equals(target, null)) 
      { 
       if (!Object.Equals(this.RadToolTipManager1, null)) 
       { 
        this.RadToolTipManager1.TargetControls.Add(target.ClientID, (e.Item as GridDataItem).GetDataKeyValue("CustomerId").ToString(), true); 
       } 
      } 
     } 
     else if (e.Item.ItemType == GridItemType.Header) 
     { 
      GridHeaderItem item = (GridHeaderItem)e.Item; 
      if (!Object.Equals(this.RadToolTipManager2, null)) 
      { 
       this.RadToolTipManager2.TargetControls.Add(item.Cells[4].ClientID, "Name", true); 
       this.RadToolTipManager2.TargetControls.Add(item.Cells[6].ClientID, "OrderDate", true); 
       this.RadToolTipManager2.TargetControls.Add(item.Cells[7].ClientID, "PaymentTypeName", true); 
       this.RadToolTipManager2.TargetControls.Add(item.Cells[8].ClientID, "TotalAmount", true); 
       this.RadToolTipManager2.TargetControls.Add(item.Cells[9].ClientID, "IsClosed", true); 
      }   
     } 
    } 

Мой путь для этой проблемы: когда пользователь парить на заголовке , я отправлю текст заголовка столбца в WebUserControl, он вернет n элементы списка с отличным значением. После этого я устанавливаю начальный фильтр и обновляю эту страницу, чтобы получить результат. Важно: все в порядке, только колонка TotalAmount не работает.

+0

Любая проблема в вашем коде Удалите условие IsPostback из вашего кода. –

+0

Я попытался удалить IsPostBack, но он все еще ничего. Другие колонки работают нормально. Только столбец TotalAmount не работает. –

+0

Можете ли вы, пожалуйста, сделать мне одну услугу, поскольку вы использовали usercontrol для всплывающей подсказки? Было бы неплохо, если вы загрузите свою страницу aspx и ascx с кодом в один проект и поделитесь ссылкой с нами? –

ответ

1

Проблемы решены. я тратить много времени с ним :(

Проблема «Как» состоянии в FilterExpression, это сделать номер столбца не фильтрует

rgOrders.MasterTableView.FilterExpression = "([" + filter.columnName + "] LIKE \'%" + filter.searchStrings + "%\') "; 

я изменить код выше:..

rgOrders.MasterTableView.FilterExpression = "([" + filter.columnName + "] = \'" + filter.searchStrings + "\') "; 

Это хорошо работает как для столбца столбца, так и для номера столбца.

Смежные вопросы