2012-08-10 75 views
0

我出口使用如何获得导出文件(telerik RadGrid导出)的路径?

RadGrid1.MasterTableView.ExportToPdf() 

这是一个子一个PDF文件。我的问题是:我能否以某种方式获得导出的文件路径?

在此先感谢,

LajosÁrpád。

+0

你希望以某种方式能够得到的文件路径,该客户选择保存文件到? – darethas 2012-08-10 15:32:04

+0

要么(但我认为这是不可能的),或将pdf文件存储在服务器上,但我不知道如何设置我的网格来将导出的pdf存储在服务器上 – 2012-08-10 16:27:02

回答

1

当您导出时,NeedDataSource事件将触发。将数据存储到简单的ADO.NET Datatable中。

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
    { 
     DataTable table = new DataTable(); 
     table.Columns.Add("Col1", typeof(double)); 
     for (int i = 0; i < 2; i++) 
      table.Rows.Add(i); 

     (sender as RadGrid).DataSource = table; 
    } 

自我解释。删除文本框,只留下文本。

public void ReplaceTextBoxes(Control ctrl) 
{ 
    var q = new Stack<Control>(ctrl.Controls.OfType<Control>()); 
    while (q.Count > 0) 
    { 
     Control control = q.Pop(); 
     if (control is ITextControl) 
     { 
      ctrl.Controls.Add(new LiteralControl((control as ITextControl).Text)); 
      ctrl.Controls.Remove(control); 
     } 
     if (control.HasControls()) 
      ReplaceTextBoxes(control); 
    } 
} 

要在服务器上存储,请添加一个OnGridExporting事件。

protected void RadGrid1_GridExporting(object sender, GridExportingArgs e) 
{ 
    using (FileStream fs = File.Create(Request.PhysicalApplicationPath + "RadGrid.pdf")) 
    { 
     byte[] output = Encoding.GetEncoding(1252).GetBytes(e.ExportOutput); 
     fs.Write(output, 0, output.Length); 
    } 

    Response.Redirect(Request.Url.ToString()); 
} 

您可以将“RadGrid.pdf”更改为您希望调用的任何内容。

最后一个按钮,使这一切发生(或者你可以调用ExportToPdf功能的地方。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    foreach (GridDataItem item in RadGrid1.MasterTableView.Items) 
     ReplaceTextBoxes(item); 
    RadGrid1.MasterTableView.ExportToPdf(); 
} 
+0

感谢您的回答。我正在尝试。 – 2012-08-10 20:00:31

+0

它创建PDF,但PDF为空。 – 2012-08-10 20:20:55

+0

持有不适当更新它,我假设你已经有其他代码 – darethas 2012-08-10 22:29:13