我有两个本地数据源可以推送到报告中.没问题.但是如何设置报告呢?一个数据源包含员工列表以及有关这些员工的信息.另一个包含每个员工的一堆工作时间.
我想在员工列表中使用一个表格,然后在每个员工的工作时间内(另外还有工作时间表).
这甚至可能吗?我必须使用子报告吗?我是否必须将它们合并为一个数据源?= /
我需要一些问题的指导,我正在使用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
我正在使用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:
如果EnableSortingAndPagingCallbacks = False:
如何让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) 我有一个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) 所以在我尝试通过ObjectDataSource进行自定义gridview分页之前...我想我已经阅读了人类已知的每个教程,以确保我得到它.它看起来不像火箭科学.
我在gridview上设置了AllowPaging = True.
我在gridview上指定了PageSize ="10".
我在ObjectDataSource上设置了EnablePaging ="True".
我已经将2个分页参数(maximumRows&startRowIndex)添加到我的业务对象的select方法中.
我创建了一个类似的"count"方法,其签名与select方法相同.
我似乎遇到的唯一问题是在执行期间... ObjectDataSource正在为我的业务对象提供最大值-1,我不能为我的生活找出原因.我已经搜索到网络的末尾,其他人遇到这个问题,显然我是唯一一个.该StartRowIndex参数似乎是工作得很好.
有任何想法吗?
我想在SQL数据库表(SQLServer 2005)中存储一个整数值数组,如果可能的话,使用单个列.
整数数组的长度为7560.
我使用的是objectdatasource,数据类型应该与tableadapter生成的参数兼容.
谢谢你的帮助:)
我尝试更新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) 我有一个GridView,我使用ObjectDataSoure作为数据源.ObjectDataSource从TextBox和DropDownList接收参数,然后将其传递给存储过程.还有一个名为Search的按钮,可以通过提供/更改TextBox和/或DropDownList中的值来强制刷新GridView.但是我注意到如果我更改了值,我就不必单击"搜索"按钮; 只需单击GridView就会导致数据绑定.
反正仍然在使用ObjectDataSource时阻止此操作?
拥有没有以下BLL(业务逻辑层)的ASP.Net 2.0应用程序是否“可以接受” ?
即使业务逻辑在演示文稿的代码中完全有效,BLL还是总是可取的吗?不使用BLL有哪些潜在的缺点?
这是一般的DataBind工作问题......
我有一个带有GridView的简单页面(在aspx代码中)绑定到ObjectDataSource.
我可以查看ObjectDataSource调用的Select()函数,看看它是在初始加载和每个回发时调用的.我在post backs上发生了一些会影响GridView数据的逻辑,我想在稍后的帖子中调用GridView.DataBind(),之后我做了一些更改.
有没有办法阻止每个帖子上发生的自动重新绑定?这是否意味着我不能将ObjectDataSource用于此控件?
objectdatasource ×10
asp.net ×6
c# ×6
gridview ×4
data-binding ×2
.net ×1
formview ×1
report ×1
sql ×1