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