This is a migrated thread and some comments may be shown as answers.

Changing Ragrid PageSizeCombo

4 Answers 103 Views
Grid
This is a migrated thread and some comments may be shown as answers.
dexter
Top achievements
Rank 1
dexter asked on 21 Sep 2011, 05:02 AM

Hi there,

Please help me.

I've tried the solution from a previous post(which is this):
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
    {
    if (e.Item is  GridPagerItem)
        {
            GridPagerItem pager = (GridPagerItem)e.Item;
            RadComboBox PageSizeComboBox = (RadComboBox)pager.FindControl("PageSizeComboBox");
            RadComboBoxItem ComboItem = new RadComboBoxItem("All");
            PageSizeComboBox.Items.Insert(0, ComboItem);
            PageSizeComboBox.AutoPostBack = true;
            PageSizeComboBox.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(PageSizeComboBox_SelectedIndexChanged);
        }
    }
void PageSizeComboBox_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
   {
       //Handle the event
   }

The only problem i'm having is the line below. It keeps returning null:
PageSizeCombo.FindItemByText(e.Item.OwnerTableView.PageSize.ToString()).Selected = true;

This is my code behind:

public partial class Admin : System.Web.UI.Page
  {
    FXGrid FXGrid1 = new FXGrid();
    protected void Page_Init(object sender, EventArgs e)
    {
      FXGrid1.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
      System.Web.HttpBrowserCapabilities browser = Request.Browser;
      TextBox txt = (TextBox)toolbarMenu.FindControl("txtSearch");
     
 DataTable dt = new DataTable();
 dt.Columns.Add("Date");
      dt.Columns.Add("MessageNo");
      dt.Columns.Add("From");
      dt.Columns.Add("NoofPages");
      dt.Columns.Add("TrackingNo");
      dt.Columns.Add("Status");
      dt.Columns.Add("CallerID");

      DataRow messagesRow = dt.NewRow();
      messagesRow["Date"] = "ALFKI";
      messagesRow["MessageNo"] = "Alfreds Futterkiste";
      messagesRow["From"] = "Alfreds Futterkiste";
      messagesRow["NoofPages"] = "Alfreds Futterkiste";
      messagesRow["TrackingNo"] = "Alfreds Futterkiste";
      messagesRow["Status"] = "Alfreds Futterkiste";
      messagesRow["CallerID"] = "Alfreds Futterkiste";
      dt.Rows.Add(messagesRow);

      DataRow messagesRow2 = dt.NewRow();
      messagesRow2["Date"] = "ALFKI";
      messagesRow2["MessageNo"] = "Alfreds Futterkiste";
      messagesRow2["From"] = "Alfreds Futterkiste";
      messagesRow2["NoofPages"] = "Alfreds Futterkiste";
      messagesRow2["TrackingNo"] = "Alfreds Futterkiste";
      messagesRow2["Status"] = "Alfreds Futterkiste";
      messagesRow2["CallerID"] = "Alfreds Futterkiste";
      dt.Rows.Add(messagesRow2);
      dt.Columns.Add("<img id='edit' style='border:0px;cursor:pointer' src='../../Images/Outlook/Edit.gif'>").SetOrdinal(0);

      DataRow[] chkEdit = new DataRow[dt.Rows.Count];
      for (int row = 0; row < dt.Rows.Count; row++)
      {
        chkEdit[row] = dt.Rows[row];
        chkEdit[row]["<img id='edit' style='border:0px;cursor:pointer' src='../../Images/Outlook/Edit.gif'>"] = "<img style='cursor:pointer' src='../../Images/Outlook/Edit.gif' value='" + dt.Rows[row][1] + "' onclick='showWin(" + dt.Rows[row][1] + ", "+row+")'>";
      }
    
      GridClientSelectColumn gcsc = new GridClientSelectColumn();
      gcsc.Resizable = false;
      FXGrid1.rowCount = dt.Rows.Count;

      FXGrid1.MasterTableView.Width = Unit.Percentage(100);
      FXGrid1.MasterTableView.TableLayout = GridTableLayout.Fixed;

      /*RadGrid's common attributes*/
      FXGrid1.GridLines = GridLines.None;
      FXGrid1.ID = "RG1";
      FXGrid1.AllowPaging = true;
      FXGrid1.AllowSorting = true;
      FXGrid1.BorderWidth = Unit.Pixel(0);

      FXGrid1.PagerStyle.AlwaysVisible = true;
      FXGrid1.MasterTableView.TableLayout = GridTableLayout.Fixed;
     

      FXGrid1.ClientSettings.Scrolling.AllowScroll = true;
      FXGrid1.ClientSettings.Scrolling.UseStaticHeaders = true;
      FXGrid1.ClientSettings.ClientEvents.OnGridCreated = "getFwdAddr";
      ttlRow.Value = FXGrid1.rowCount.ToString();
      FXGrid1.AllowMultiRowSelection = true;
      FXGrid1.ClientSettings.Selecting.AllowRowSelect = true;

      FXGrid1.pgName = "inbound";
      this.phIBRoute.Controls.Add(FXGrid1);
      FXGrid1.DataSource = dt;

      if (!IsPostBack)
      {
        FXGrid1.MasterTableView.Columns.Add(gcsc);
        FXGrid1.DataBind();
      }
      FXGrid1.setSize();
      Page.PreRender += new EventHandler(FXGrid1.setCombo);
    }
  }

This is my cs file:

public class FXGrid : RadGrid
    {       
        private int pgVal;
        private RadComboBox pgSize;      
        public int rowCount;      
        public double percentWidth = 0;
        public bool blackList = false;
        public String pgName = "";
        public String hideCol = "";
        public String setName;
        public String setNameVal;
        public DataTable dt;
        public String browserType;
        protected RadComboBox rcb = new RadComboBox();
        public FXGrid()
        {
            rcb.DataTextField = "Text";
            rcb.DataValueField = "Value";
            rcb.LoadContentFile(@"~\Common\Xml\GridPageSize.xml");
            pgVal = int.Parse(rcb.Items[rcb.SelectedIndex].Text);
            this.ClientSettings.Resizing.AllowColumnResize = true;
            this.ItemCreated += new GridItemEventHandler(this.testo);
           
            this.ItemDataBound +=new GridItemEventHandler(setCellTooltip);
            this.EnableViewState = true;
            this.ShowHeader = true;
            this.ClientSettings.Resizing.ClipCellContentOnResize = false;
            this.ClientSettings.Resizing.ResizeGridOnColumnResize = false;
            this.ClientSettings.Resizing.AllowResizeToFit = false;
            this.ViewStateMode = ViewStateMode.Enabled;

        }
         public void setCellTooltip(object sender, GridItemEventArgs e)
        {          
            int count = 0;
            if (e.Item is GridDataItem)
            {

                foreach (TableCell cell in e.Item.Cells)
                {

                    if (pgName == "docStore" || pgName == "netSetFaxAgentDR")
                    {
                        if (count >= 5)
                        {
                            String tmpStr = cell.Text.Replace("<nobr>", "");
                            cell.ToolTip = tmpStr.Replace("</nobr>", "");
                        }
                    }
                    else if (pgName == "utilitySearchMsg")
                    {
                        if (count >= 3)
                        {
                            String tmpStr = cell.Text.Replace("<nobr>", "");
                            cell.ToolTip = tmpStr.Replace("</nobr>", "");
                        }
                    }
                    else
                    {
                        if (count >= 4)
                        {
                            String tmpStr = cell.Text.Replace("<nobr>", "");
                            cell.ToolTip = tmpStr.Replace("</nobr>", "");
                        }
                    }
                    count++;
                }
            }
        }
        public void testo(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridPagerItem)
            {
                pgSize = (RadComboBox)e.Item.FindControl("PageSizeComboBox");
                pgSize.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(setSize);
                pgSize.Items.Clear();
                for (int sub = 0; sub < rcb.Items.Count; sub++) {
                    pgSize.Items.Add(new RadComboBoxItem(rcb.Items[sub].Text));
                    pgSize.FindItemByText(rcb.Items[sub].Text).Attributes.Add("ownerTableViewId", this.MasterTableView.ClientID);
                }
            }
        }
        public void setSize()//This is called at the last line in my code behind.
        {
            this.PageSize = pgVal;
            this.MasterTableView.Rebind();
        }

If i remove this line, PageSizeCombo.FindItemByText(e.Item.OwnerTableView.PageSize.ToString()).Selected = true; i can see that the pagesizecombo is showing the correct value but when i click on it, page reloads but the size of rows is not changed. Another problem is when i click on other value, the page reloads and the pagesizecombo selects the default value.

Please help. I've looked for a lot of articles but none seems to fit me.

Regards,
Dexter

4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 21 Sep 2011, 05:27 AM
Hello Dexter,

I an not quite sure about your scenario from where you are calling the PageSizeCombo .Make sure that e.Item.OwnerTableView.PageSize.ToString()) should be assigned a value.

Thanks,
Princy.
0
dexter
Top achievements
Rank 1
answered on 21 Sep 2011, 05:57 AM

Hi Princy,

Thank you so much for your quick reply.

Sorry for the confusion, i took out this line in the FXGrid() constructor:

this.ItemCreated += new GridItemEventHandler(this.testo);

So during initialization of the object, it will call testo function, which will change the pagesizecombobox right?

But in this example, i have to remove this line:
PageSizeCombo.FindItemByText(e.Item.OwnerTableView.PageSize.ToString()).Selected = true;
Or else it will result in error.

You mentioned that i need to assign a value to e.Item.OwnerTableView.PageSize.ToString()). How do i do that?
What value should i assign? What is the purpose of this?

Thanks.
Dexter

 

0
dexter
Top achievements
Rank 1
answered on 23 Sep 2011, 07:40 AM
Hi there,

Can anyone help please? Kinda in a hurry with this.

Thanks a bunch.

Regards,
Dexter
0
Princy
Top achievements
Rank 2
answered on 23 Sep 2011, 07:55 AM
Hello Dexter,

I suppose you want to customize the PagerCombobox. The following forum thread explains the same.
How to Add "Show All" option in RadGrid Paging.

Thanks,
Princy.
Tags
Grid
Asked by
dexter
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
dexter
Top achievements
Rank 1
Share this question
or