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

RadGrid_ItemCommand and RadGrid_ItemCreated

3 Answers 167 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Neil
Top achievements
Rank 1
Neil asked on 25 Nov 2011, 06:02 PM
I am trying to apply formatting to a pdf export using the RadGrid_ItemCreated event as described in:

http://www.telerik.com/help/aspnet/grid/grdexporttipstricks.html

Problem is that RadGrid_ItemCreated is always called before RadGrid_ItemCommand so setting a boolean value in RadGrid_ItemCommand to be used in RadGrid_ItemCreated doesn't work.

We are using the 2011 Q3 release.  I'm new to telerik controls so am probably missing something obvious.

Any ideas please.  Thanks.

3 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 25 Nov 2011, 06:09 PM
Hello,

Are you trying to export with inbuilt button or with External button.?

Thanks,
Jayesh Goyani
0
Jayesh Goyani
Top achievements
Rank 2
answered on 25 Nov 2011, 06:36 PM
Hello,

Please check below code snippet.

<div>
      <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
      </telerik:RadScriptManager>
      <asp:Button ID="Button1" runat="server" Text="export to pdf" OnClick="Button1_Click" />
      <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false"
          OnNeedDataSource="RadGrid1_NeedDataSource" onitemcommand="RadGrid1_ItemCommand">
      <ExportSettings ExportOnlyData="true" OpenInNewWindow="true"></ExportSettings>
          <MasterTableView CommandItemDisplay="Top">
           
              <CommandItemSettings ShowExportToPdfButton="true" />
              <Columns>
                  <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                  </telerik:GridBoundColumn>
                  <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                  </telerik:GridBoundColumn>
                  <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                  </telerik:GridBoundColumn>
                  <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                  </telerik:GridBoundColumn>
              </Columns>
          </MasterTableView>
      </telerik:RadGrid>
  </div>
protected void Page_Load(object sender, EventArgs e)
        {
 
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            RadGrid1.MasterTableView.ExportToPdf();
            RadGrid1.Rebind();
            ApplyStle();
        }
        protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
 
            dynamic data = new[] {
                new { ID = 1, Name ="name1"},
                new { ID = 2, Name = "Name2"},
                new { ID = 3, Name = "name3"},
                new { ID = 4, Name = "Name4"},
                new { ID = 5, Name = "name5"}
            };
            RadGrid1.DataSource = data;
 
        }
        protected void ApplyStle()
        {
            foreach (GridDataItem item in RadGrid1.Items)
            {
                item.Font.Name = "Calibri";
                item.Style["font-size"] = "8pt";
                item.Style["background-color"] = "#c3c3c3";
                item.Style["vertical-align"] = "middle";
            }
        }
 
        protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName == RadGrid.ExportToPdfCommandName)
            {
                ApplyStle();
            }
        }


Thanks,
Jayesh Goyani
0
Neil
Top achievements
Rank 1
answered on 28 Nov 2011, 11:29 AM
Thanks Jayesh, that's resolved it.  In answer to your 1st question I tried with both an inbuilt button and external button, same problem applied to both.  I have a slightly different solution to yours, but calling Rebind() was the key.  This causes ItemCreated() to be fired after the export.  Capturing the ItemCreated event allows me to get each GridItem (so for example I can then format header items) rather than GridDataItems in your example.  Code snippet:

bool _isPdfExport = false;
 
protected void Button_Click(object sender, EventArgs e)
{           
   radGrid.MasterTableView.ExportToPdf();
   radGrid.Rebind();
   _isPdfExport = true;
}
 
protected void radGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
   LoadData();
}
 
private void LoadData()
{
   radGrid.DataSource = [set datasource]
   if (!_isPdfExport ) radGrid.DataBind();
}
 
protected void radGrid_ItemCreated(object sender, GridItemEventArgs e)
{
   if (_isPdfExport) SetPdfItemFormatting(e.Item);
}
 
private void SetPdfItemFormatting(GridItem item)
{
   if (item is GridHeaderItem)
   {
      GridHeaderItem headerItem = (GridHeaderItem)item;
      //implement formatting for header item here
   }
}
Tags
Grid
Asked by
Neil
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Neil
Top achievements
Rank 1
Share this question
or