标签: objectdatasource

SSRS:包含两个数据源的主详细报告

我有两个本地数据源可以推送到报告中.没问题.但是如何设置报告呢?一个数据源包含员工列表以及有关这些员工的信息.另一个包含每个员工的一堆工作时间.

我想在员工列表中使用一个表格,然后在每个员工的工作时间内(另外还有工作时间表).

这甚至可能吗?我必须使用子报告吗?我是否必须将它们合并为一个数据源?= /

c# objectdatasource report reporting-services

8
推荐指数
2
解决办法
1万
查看次数

从Entity框架返回自定义对象<List T>并分配给对象数据源

我需要一些问题的指导,我正在使用Entity Framework 4.0,我有一个DAL和BLL并且在页面上绑定到ObjectDataSource.

我不得不使用PIVOT动态SQL 编写存储过程,以我想要的方式从多个实体返回数据.现在我试图找出如何让Entity Framework返回一个我可以ObjectDataSource在页面上绑定到我的自定义对象,我需要使用自定义对象或动态对象,因为存储过程可以返回任意数量的列,所以我不能使用强类型类或实体,我也需要能够绑定它ObjectDataSource.

有人能指出一个很好的方法来做这个以及如何定义我的功能?请举几个代码示例.

我读到我应该尝试List<T>用于返回一个对象,因为EF不支持返回数据表/数据集,到目前为止我有以下内容,但我知道这是不正确的.

我没有太多使用仿制药,如果你能指出如何做到这一点,我相信这对很多人都有帮助.请提供函数的代码示例以及如何绑定ObjectDataSource到返回对象?

非常感谢您的帮助!!

感谢您的帮助Richard根据您对使用DbDataRecord的建议,这就是我现在的功能

ObjectDataSourceDAL中的C#函数

public List<DbDataRecord> GetData(int product_id)
{
    List<DbDataRecord> availableProducts = new List<DbDataRecord>();

    var groupData = context.ExecuteStoreQuery<DbDataRecord>("exec 
  spGetProducts @ProductID={0}", product_id);

    availableProducts = groupData.ToList<DbDataRecord>();

    return availableProducts;
}
Run Code Online (Sandbox Code Playgroud)

ObjectDataSource 在ASPX页面中

<asp:ObjectDataSource ID="ODSProductAvailability" runat="server"
        TypeName="Project.BLL.ProductBL" 
        SelectMethod="GetData"  >
     <SelectParameters>
        <asp:SessionParameter Name="product_id" SessionField="ProductID" />
     </SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)

现在,当我访问页面时,我收到此错误:

结果类型"System.Data.Common.DbDataRecord"可能不是抽象的,必须包含默认构造函数

这是因为ExecuteStoreQuery期望被定义为类还是实体?如何根据存储过程结果创建一个对象并将其分配给它?

c# stored-procedures entity-framework objectdatasource entity-framework-4

8
推荐指数
1
解决办法
2万
查看次数

如何使用带有TemplateFields的ObjectDataSource对GridView进行排序

背景:

我正在使用GridView和ObjectDataSource.我正在实施分页和排序.

在ObjectDataSource上:

        objectDataSource.TypeName = value;
        objectDataSource.SelectMethod = "Select";
        objectDataSource.SelectCountMethod = "SelectCount";
        objectDataSource.SortParameterName = "sortExpression";
        objectDataSource.EnablePaging = true;
Run Code Online (Sandbox Code Playgroud)

在GridView上:

        gridView.AllowPaging = true;
        gridView.AllowSorting = true;
        gridView.DataSource = objectDataSource;
Run Code Online (Sandbox Code Playgroud)

为了使分页和排序工作,我将"EnableSortingAndPagingCallbacks"设置为True.之前,我得到一个"System.Web.HttpException:GridView触发的事件排序,但没有处理." 这解决了它.

如果我在GridView中只使用BoundFields,这很好并且工作正常.

但是,如果我使用TemplateFields,我会收到"NotSupportedException:TemplateField不支持回调,因为某些控件无法在回调中正确更新.在GridView上关闭回调."

哪个,有道理.我只需要知道如何在不使用EnableSortingAndPagingCallbacks的情况下进行排序.

如果EnableSortingAndPagingCallbacks = True:

  • 寻呼作品
  • 排序工作
  • BoundFields工作
  • 模板列做工作

如果EnableSortingAndPagingCallbacks = False:

  • 寻呼作品
  • 排序并没有工作
  • BoundFields工作
  • TemplateFields工作

我的问题:

如何让Paging,Sorting和TemplateField同时工作?


澄清实施情况:

将ObjectDataSource与GridView一起使用需要实现一个名为Select的方法,该方法提供排序表达式,要返回的行数和起始行:

    public IEnumerable<CountyAndStateGridRow> Select(string sortExpression, int maximumRows, int startRowIndex)
    {
        string oql = "select County order by {" + sortExpression + "}" ;

        var counties = …
Run Code Online (Sandbox Code Playgroud)

asp.net gridview objectdatasource templatefield

7
推荐指数
1
解决办法
9817
查看次数

回发后GridView没有正确重新绑定

我有一个GridView,它有一个指向ObjectDataSource的DataSourceID.ObjectDataSource指向一个方法,该方法使用ObjectDataSource控件的TypeName,SelectMethod和SelectCountMethod属性返回LINQ IQueryable.发生的事情是数据在前期正确加载.然而,在回发,如果我在GridView中删除行并尝试使用明确GridView.DataBind()重新绑定,这是行不通的.我知道LINQ正在返回正确的rowcount,因为我调用了countmethod并返回了正确的rowcount.这是一个简单的例子:

<asp:GridView ID="TestGridView" runat="server" PageSize="20" 
    AutoGenerateColumns="false" AllowPaging="true" 
    AllowSorting="false" DataSourceID="TestDataSource">
    <Columns>
        ...
    </Columns>
</asp:GridView>

<asp:ObjectDataSource ID="TestDataSource" runat="server" 
    EnablePaging="true" SelectCountMethod="GetDetailCount" 
    SelectMethod="GetDetails" TypeName="MyApp.PageClass" />
Run Code Online (Sandbox Code Playgroud)

我尝试添加一个按钮并添加TestGridView.DataBind(); 方法.我已经尝试将其添加到Page_PreRender事件中.无论我尝试什么,它都无法正常工作.

正如下面有人建议的那样,我也尝试过将它移到Page_Load,但没有去.这是我的代码的一个粗略示例:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // Set "initial" query parameters, then ...
        BindData();
    }
}

private void BindData()
{
    // EDITED: Removed the code below since I'm not looking to delete the
    //         rows from the database, but rather get the GridView to rebind
    //         which its not.
    ////Remove all …
Run Code Online (Sandbox Code Playgroud)

asp.net data-binding gridview objectdatasource

7
推荐指数
2
解决办法
3万
查看次数

通过ObjectDataSource进行Gridview分页:为什么maximumRows被设置为-1?

所以在我尝试通过ObjectDataSource进行自定义gridview分页之前...我想我已经阅读了人类已知的每个教程,以确保我得到它.它看起来不像火箭科学.

我在gridview上设置了AllowPaging = True.

我在gridview上指定了PageSize ="10".

我在ObjectDataSource上设置了EnablePaging ="True".

我已经将2个分页参数(maximumRows&startRowIndex)添加到我的业务对象的select方法中.

我创建了一个类似的"count"方法,其签名与select方法相同.

我似乎遇到的唯一问题是在执行期间... ObjectDataSource正在为我的业务对象提供最大值-1,我不能为我的生活找出原因.我已经搜索到网络的末尾,其他人遇到这个问题,显然我是唯一一个.该StartRowIndex参数似乎是工作得很好.

有任何想法吗?

c# asp.net gridview objectdatasource

7
推荐指数
2
解决办法
8195
查看次数

在SQL Server中存储整数值数组

我想在SQL数据库表(SQLServer 2005)中存储一个整数值数组,如果可能的话,使用单个列.

整数数组的长度为7560.

我使用的是objectdatasource,数据类型应该与tableadapter生成的参数兼容.

谢谢你的帮助:)

c# sql objectdatasource sql-server-2005

7
推荐指数
2
解决办法
2万
查看次数

在FormView中找不到名为"xxx.yyy"的属性(嵌套属性的双向绑定)

我尝试更新FormView时出现此错误

无法在ObjectDataSource'odsForm'中的DataObjectTypeName属性指定的类型上找到名为"MainContact.FirstName"的属性.

我认为这是因为我在EditTemplate中使用了像这样的文本框

<asp:TextBox Text='<%# Bind("MainContact.FirstName") %>' ID="txtFirstName" runat="server" />
Run Code Online (Sandbox Code Playgroud)

它在文本框中显示正确的文本,但显然它在更新时不起作用.

这是FormView的数据源

<asp:ObjectDataSource ID="odsForm" runat="server" DataObjectTypeName="Helpers.BusinessObjects.EntryItem"
    SelectMethod="GetEntryByEmail" TypeName="Helpers.DataAccessers.EntryHelper"
    UpdateMethod="UpdateEntry">
    <SelectParameters>
        <asp:SessionParameter SessionField="email" Name="email" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)

这是EntryItem类

 public class EntryItem
    {
        public int Id { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public Person MainContact { get; set; } 
        ...
    }
Run Code Online (Sandbox Code Playgroud)

和人类

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net formview objectdatasource

7
推荐指数
1
解决办法
2044
查看次数

是否可以阻止ObjectDataSource自动绑定?

我有一个GridView,我使用ObjectDataSoure作为数据源.ObjectDataSource从TextBox和DropDownList接收参数,然后将其传递给存储过程.还有一个名为Search的按钮,可以通过提供/更改TextBox和/或DropDownList中的值来强制刷新GridView.但是我注意到如果我更改了值,我就不必单击"搜索"按钮; 只需单击GridView就会导致数据绑定.

反正仍然在使用ObjectDataSource时阻止此操作?

c# asp.net gridview objectdatasource

7
推荐指数
1
解决办法
7249
查看次数

没有业务逻辑层的ASP.Net 2.0应用程序?

拥有没有以下BLL(业务逻辑层)的ASP.Net 2.0应用程序是否“可以接受” ?

  1. SQL Server数据存储和存储过程
  2. 数据链接层(强类型表适配器)连接到存储的Procs
  3. 带有代码和ObjectDataSource的表示层ASPX页面,用于直接连接到DLL

即使业务逻辑在演示文稿的代码中完全有效,BLL还是总是可取的吗?不使用BLL有哪些潜在的缺点?

asp.net business-logic-layer objectdatasource

6
推荐指数
1
解决办法
1854
查看次数

DataBind和Postback

这是一般的DataBind工作问题......

我有一个带有GridView的简单页面(在aspx代码中)绑定到ObjectDataSource.

我可以查看ObjectDataSource调用的Select()函数,看看它是在初始加载和每个回发时调用的.我在post backs上发生了一些会影响GridView数据的逻辑,我想在稍后的帖子中调用GridView.DataBind(),之后我做了一些更改.

有没有办法阻止每个帖子上发生的自动重新绑定?这是否意味着我不能将ObjectDataSource用于此控件?

.net data-binding objectdatasource

6
推荐指数
2
解决办法
7477
查看次数