【问题标题】:Convert Object DataSource to datatable C #将对象数据源转换为数据表 C#
【发布时间】:2021-08-01 04:44:59
【问题描述】:

我正在使用一个解决方案来处理带有类和网站的多个项目,在表示视图的网站中的文件 Reports.aspx 中是以下代码

                    </asp:ObjectDataSource>
                                    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="ObtenerEncabezadoReportePedido"
                                        TypeName="com.heinsohn.fabricaSw.sodexho.Pedidos.model.enterprise.FachadaContabilizacion">
                                        <SelectParameters>
                                            <asp:SessionParameter Name="unNumeroPedido" SessionField="NumeroPedido" Type="Double" />
                                        </SelectParameters>
                                    </asp:ObjectDataSource>

方法ObtenerEncabezadoReportePedido返回一个数据表,

在视图逻辑aspx.cs使用ObjectDataSource1填充报表

miFuente = new ReportDataSource("DataSet2_DataTable1", this.ObjectDataSource1);

响应数据表变成了一个 ObjectDataSource, 我需要修改该返回的字段,并将一些保存在变量中。这是可能的?我可以将该 ObjectDataSource 转换为数据表并根据需要使用它吗? ,我可以稍后将其转换回已修改的 ObjectDataSource 吗?

非常感谢您的帮助

【问题讨论】:

    标签: c# asp.net .net visual-studio


    【解决方案1】:

    您可以尝试使用以下代码将对象Datasource转换为数据表。

    public  DataTable ChangeData()
            {
                DataTable dt = ((DataView)ObjectDataSource1.Select()).Table;
                dt.Rows[0]["Age"] = 33;   //Change data
                return dt;
    
            }
    

    完成的代码:

    public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //set Processing Mode of Report as Local   
                    ReportViewer1.ProcessingMode = ProcessingMode.Local;
                    //set path of the Local report   
                    ReportViewer1.LocalReport.ReportPath = @"D:\Report1.rdlc";
                    //creating object of DataSet dsMember and filling the DataSet using SQLDataAdapter   
                 
                    //Providing DataSource for the Report   
                    ReportDataSource rds = new ReportDataSource("DataSet1", ObjectDataSource1);
                    ReportViewer1.LocalReport.DataSources.Clear();
                    //Add ReportDataSource   
                    ReportViewer1.LocalReport.DataSources.Add(rds);
                   
                }
            }
    
            public  DataTable ChangeData()
            {
                DataTable dt = ((DataView)ObjectDataSource1.Select()).Table;
                dt.Rows[0]["Age"] = 33;
                return dt;
    
            }
    
            protected void btnAdd_Click(object sender, EventArgs e)
            {
                DataTable table = ChangeData();
                ReportDataSource rds = new ReportDataSource("DataSet1", table);
                ReportViewer1.LocalReport.DataSources.Clear();
                //Add ReportDataSource   
                ReportViewer1.LocalReport.DataSources.Add(rds);
            }
        }
    
        public class Student
        {
            public static DataTable GetDataTable()
            {
                DataTable table = new DataTable();
                table.Columns.Add("Name", typeof(string));
                table.Columns.Add("Age", typeof(int));
                table.Columns.Add("ID", typeof(int));
                table.Rows.Add("test1", 22, 1001);
                table.Rows.Add("test2", 23, 1002);
                table.Rows.Add("test3", 24, 1003);
                table.TableName = "table1";
    
                return table;
            }
        }
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-16
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多