好的,所以这里是设置.我正在构建一个页面,其中包含一个listview,一个datapager和3个datapagerfield(2个NextPreviousPagerField,1个NumericPagerField),以及一个objectdatasource来将所有这些结合在一起.
在我将一个断点放入objectdatsource控件中指定的SelectMethod之前,一切正常.对于每个datapagerfield控件,它似乎都在调用selectmethod和selectcount方法.因此,无论何时用户进行分页,它都会调用数据库6次而不是2次(我没有打开缓存atm).如果我删除一个datapagerfield,它将删除2个调用.
现在这是在VS2008中的asp.net 3.5 SP1中构建的.当我将相同的代码文件复制到asp.net 4.0 VS2010解决方案时,它的重复调用似乎已经消失.
这是asp.net 3.5 SP1中的错误吗?
提前致谢
创建一个新的Web应用程序(我使用的是Visual Studio 2008版本9.0.30729.1 SP)
在Aspx页面中,将Form标签替换为:(可能需要更改类型名称以匹配您的页面名称)
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True" />
<div>
<asp:DropDownList runat="server" DataSourceID="ObjectDataSource1">
</asp:DropDownList>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Data" TypeName="WebApplication1.WebForm2"
OnObjectCreating="ObjectDataSource1_ObjectCreating"></asp:ObjectDataSource>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
在服务器页面上,添加以下功能:
public IEnumerable<string> Data()
{
return new string[] { "some data", "foo", "bar" };
}
Run Code Online (Sandbox Code Playgroud)
然后添加此事件处理程序:
protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = this;
}
Run Code Online (Sandbox Code Playgroud)
现在运行应用程序.我得到"Sys is undefined"脚本错误.自动脚本的大部分完全丢失.
现在注释掉对象实例行,
protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
//e.ObjectInstance = this;
}
Run Code Online (Sandbox Code Playgroud)
现在,当您运行应用程序时,没有脚本错误.
这里发生了什么?
c# asp.net objectdatasource scriptmanager visual-studio-2008
我正在使用ObjectDataSource来执行CRUD操作.出于某种原因,我得到一个"ObjectDataSource'ObjectDataSource1'没有要插入的值.检查'values'字典是否包含值."
有什么建议?
我知道这个控件继承自ObjectDataSource控件.根据文档http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.insertmethod.aspx
如果设置了DataObjectTypeName属性,则以不同的方式解析该方法.ObjectDataSource查找具有在InsertMethod属性中指定的名称的方法,该属性采用DataObjectTypeName属性中指定的类型的一个参数.
这就是我的ObjectDataSource控件的设置方式.
<asp: ObjectDataSource ID="ObjectDataSource1" runat="server"
DataObjectTypeName="MyApplication.Entities.Domain.MyObject" ConflictDetection="CompareAllValues"
OldValuesParameterFormatString="original{0}" SelectMethod="GetUserDisplays"
InsertMethod="CreateMyObject" UpdateMethod="UpdateMyObject" DeleteMethod="DeleteDisplay">
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
我在InsertMethod上设置了一个断点,但是当我尝试保存表单时,应用程序甚至没有点击它.我怀疑DataObjectType由于某种原因没有被正确实例化.
我试图执行在ASPxGridview控制EditForm插入操作和DataObjectType是EF POCO它有它的一些附加属性(标记虚拟)从ObjectContext中加载相关的实体.我认为这可能是问题,但不知道如何解决它(到处寻找!!!).
任何帮助将不胜感激!
asp.net entity-framework objectdatasource entity-framework-4.1
我想知道GridView在使用ObjectDataSource或实体框架时我们如何在头部内使用排序图像.因为它具有直接调用功能并且还具有排序表达式.
那么,我如何使用GridView.RowCreated事件并获取排序表达式来绑定排序图像?
在下面的示例中,我的Foo参数的DefaultValue传递一个null值而不是string.Empty
<asp:ObjectDataSource ID="MyDataSource" runat="server" SelectMethod="GetAll"
UpdateMethod="MyUpdateMethod" TypeName="My.Namespace.MyProvider">
<UpdateParameters>
<asp:Parameter Name="Key" Type="Int16" />
<asp:Parameter Name="Foo" Type="String" DefaultValue="" />
</UpdateParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
虽然我可以处理它MyUpdateMethod,有没有办法将DefaultValue字符串参数设置为空字符串?
我在类库(作为嵌入式资源)中创建了一个本地报表,我想使用现有的业务对象作为报表的数据源.当我尝试从"报表数据"工具箱添加业务对象时,我看不到要选择的类.我注意到的是,如果业务对象是另一个类的子类,它存在于另一个类库中,那么它就不会出现.有没有人见过这个?所以我试过的是这样的:
场景1:
班级图书馆1
当我打开Report1.rdlc并尝试从Report Data工具箱创建一个New Object Data Source时,MyBO类是可见的,我可以选择它.如果我改变我的解决方案:
类库2命名空间ClassLibrary2 {public class MySuperClass {...}}
班级图书馆1
现在,当我尝试添加MyBO类时,它不会出现在"报表数据"工具箱中.不幸的是,我正在使用一个产品,而我的Business对象必须是另一个类库中的超类的子类.
有谁知道如何解决这个问题或这是一个错误?哦,我正在使用.Net 4和VS2010.谢谢.
亲切的问候
Sidharth
我正在尝试使用Gridview来显示来自Object数据源的数据表.它给了我错误:
ObjectDataSource 'odsStores' could not find a non-generic method 'ProcessDelete' that has parameters: ProcessID.
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于匹配大小写,匹配格式,变量这个问题的很多其他答案,但我想我已经完成了所有这些.这是aspx页面:
<asp:GridView ID="gridStores" runat="server" AllowSorting="False" AutoGenerateColumns="False"
CssClass="grid-main" DataSourceID="odsStores" EnableViewState="False" OnDataBound="gridStores_DataBound"
OnRowDataBound="gridStores_RowDataBound">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Image ID="imgModel" runat="server" AlternateText="Click to See Details" CssClass="img-details"
EnableViewState="False" ImageUrl="~/img/detail.gif" />
</ItemTemplate>
<ItemStyle CssClass="grid-main-detail" />
</asp:TemplateField>
<asp:BoundField DataField="ProcessID" HeaderText="ProcessID" />
<asp:BoundField DataField="ProcessName" HeaderText="Process Name" ReadOnly="False" />
<asp:BoundField DataField="ProcessDescription" HeaderText="Process Description" ReadOnly="False" />
<asp:BoundField DataField="UpdateUserID" HeaderText="Last Updated By" ReadOnly="True" />
<asp:BoundField DataField="UpdateTimestamp" HeaderText="Last Updated" ReadOnly="True" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" /> …Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用ObjectDataSource的应用程序.我希望我的所有患者详细信息都显示在GridView中,一旦用户选择其中的记录,我想在详细信息视图中显示特定记录的数据.
但是我有一个错误 getPatientFullDetailsbyPPS
参数化查询'(@PPS nvarchar(4000))选择*来自患者,其中PPS = @PPS'需要参数'@PPS',这是未提供的.
C#:
public static Patient GetPatientFullDetailsByPPS(string PPS)
{
Patient patient = new Patient();
//string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
SqlCommand cmd = new
SqlCommand("Select * from Patients where PPS = @PPS", con);
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@PPS";
parameter.Value = PPS;
cmd.Parameters.Add(parameter);
con.Open();
SqlDataReader dr = cmd.ExecuteReader(); --------> error here
while (dr.Read())
{
patient.PPS = dr["PPS"].ToString();
patient.Surname = dr["Surname"].ToString();
patient.Name = dr["Name"].ToString();
patient.DOB …Run Code Online (Sandbox Code Playgroud) asp.net ×7
c# ×4
gridview ×2
dataadapter ×1
datapager ×1
detailsview ×1
listview ×1
rdlc ×1
string ×1
vb.net ×1