我有这个DataTable,除了序列号之外,它有一组不同的列.
| 序列| 价值| 税| 职责| 总计|
应使用唯一列名接受任意数量的列.
要显示该表,我需要使用一个ObjectDataSource,使用Select方法映射到presenter类.
class Presenter {
[DataObjectMethod(DataObjectMethodType.Select)]
public DataView GetDutyAndTax() { ... }
}
Run Code Online (Sandbox Code Playgroud)
然后将ObjectDataSource绑定到GridView,并将AutoGenerateColumns设置为true.Sequence是数据键.
到目前为止,这适用于选择表格.当我需要更新表时问题就出现了.ObjectDataSource一直唠叨我有一个更新方法,其参数与表中列的参数完全相同.
public void EditDutyAndTax(string Value, string Tax, string Duty, string original_Sequence) { ... }
Run Code Online (Sandbox Code Playgroud)
但我无法创建这样的方法,因为我不知道所需的列集.
我尝试使用带有可变参数列表的方法,但它不想使用它.
public void EditDutyAndTax(params object[] values) { ... }
Run Code Online (Sandbox Code Playgroud)
我现在想的是在Presenter中创建一组这样的更新方法:
public void EditDutyAndTax(string value1, string original_Sequence) { ... }
public void EditDutyAndTax(string value1, string value2, string original_Sequence) { ... }
public void EditDutyAndTax(string value1, string value2, string value3, string original_Sequence) { ... }
//an …Run Code Online (Sandbox Code Playgroud) 我有一个 gridview,其 DataSourceID 属性设置为自定义 ObjectDataSource 对象。当 AllowPaging 设置为 True 时,GridView 在回发后消失。如果我将 AllowPaging 设置为 False 就可以了。有人可以为我解释一下吗?:)
编辑:我感到困惑的另一件事是我认为如果您设置DataSourceID,网格将在需要时从数据源获取数据。如果网格因为没有保存数据而消失,为什么 gridview 没有从数据源获取它需要的数据?
我正在使用带有ObjectDataSource的FormView并使用<%#Bind("WhateverProp")%>绑定 - 并且我的所有可空列都返回其中的类型的默认值.
看起来FormView对象没有像其他绑定容器那样的ConvertEmtpyStringToNull属性.我发现文章暗示这是VS 2005/.Net 2.0中的一个错误 - 但是没有看到任何说法是什么决议.
有没有人有任何关于如何解决这个问题的建议,而不仅仅是重新捕获ODS_Inserting事件中的所有字段?我宁愿不必编写代码来重新绑定表单上的所有绑定字段,只是为了测试空值.
我有一个绑定到ObjectDataSource的FormView.
*ObjectDataSource定义(为简单起见,省略了部分内容)*
<asp:ObjectDataSource
ID="odsHousehold"
runat="server"
TypeName="BLL.Households"
ConflictDetection="OverwriteChanges"
UpdateMethod="UpdateHousehold"
>
<UpdateParameters>
<asp:Parameter Name="sName" Type="String" Direction="Input" />
<asp:Parameter Name="sAddress" Type="String" Direction="Input" DefaultValue="" />
<asp:Parameter Name="sCity" Type="String" Direction="Input" DefaultValue="" />
<asp:Parameter Name="sState" Type="String" Direction="Input" DefaultValue="" />
<asp:Parameter Name="sZip" Type="String" Direction="Input" DefaultValue="" />
</UpdateParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
*FormView定义(为简单起见,省略了部分内容)*
<asp:FormView
ID="fvHousehold"
runat="server"
DataKeyNames="HouseholdID"
DataSourceID="odsHousehold"
HorizontalAlign = "Left"
>
<EditItemTemplate>
<asp:TextBox ID="txtHouseHoldName" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("HouseholdName") %>'></asp:TextBox>
<asp:TextBox ID="txtAddress" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("Address") %>'></asp:TextBox>
<asp:TextBox ID="txtCity" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("City") %>'></asp:TextBox>
<asp:TextBox ID="txtState" runat="server" MaxLength="50" …Run Code Online (Sandbox Code Playgroud) 我在GridView控件中有一个TemplateField,例如:
<asp:TemplateField ItemStyle-Width="150px">
<ItemTemplate>
<asp:DropDownList ID="ddlFields" runat="server" DataSourceID="odsOperator" DataTextField="Text" DataValueField="Value" />
<asp:HiddenField ID="hfFieldType" runat="server" Value='<%# Eval("FieldType")%>' />
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
我有一个要从ObjectDataSource填充的下拉列表,但是我想为每一行传递一个Select Parameter,以便它以正确的值填充
<asp:ObjectDataSource ID="odsOperator" runat="server" TypeName="OperatorFieldsDAO"
SelectMethod="FindByType">
<SelectParameters>
<asp:ControlParameter ControlID="hfFieldType" Type="String" Name="Type" PropertyName="Value" />
</SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
我的OperatorFieldsDAO类是:
public class OperatorFieldsDAO
{
private List<OperatorField> OperatorFields
{
get
{
List<OperatorField> operatorFields = HttpContext.Current.Session["OperatorFields"] as List<OperatorField>;
if (operatorFields == null)
{
operatorFields = new List<OperatorField>();
operatorFields.Add(new OperatorField("string", "contains", "C"));
operatorFields.Add(new OperatorField("string", "begins with", "BW"));
operatorFields.Add(new OperatorField("string", "is equal to", "E"));
operatorFields.Add(new OperatorField("string", "is not …Run Code Online (Sandbox Code Playgroud) 我一直在努力让FormViews按照微软预期的方式工作大约一天,并且已经找到了很多很棒的东西.
我可以在ObjectDataSource.Inserting事件处理程序中捕获e.Exception和e.ReturnValue,我甚至可以通过检查e.ObjectInstance来欺骗和检查ObjectDataSource.ObjectDisposing中Object的其他属性......我甚至了解到FormView的插入处理程序在ObjectDisposing处理程序之后运行所以如果发现问题,我仍然有时间对它做出反应并在FormView上将e.KeepInInsertMode设置为true.
我的问题是,似乎用户输入到Insert表单中的值无论如何都被清除.
那么,在插入方法被触发后,如何防止FormView清除?
(使用ASP.NET + VB)
我不认为在这里发布我的代码会真的做得很好,我将不得不修改它以删除机密业务逻辑的东西......所以我现在就跳过它.
编辑:
我找到了一个临时且公认的非常狡猾的解决方案(如果没有人找到真正的解决方案).
我有一个页面变量定义为:
Dim eInsertArgs As FormViewInsertedEventArgs
Run Code Online (Sandbox Code Playgroud)
然后我在ItemInserted处理程序中执行以下操作
If boolInsertErrorOccurred = False Then
e.KeepInInsertMode = True
eInsertArgs = e
Else
eInsertArgs = Nothing
End If
Run Code Online (Sandbox Code Playgroud)
然后在每个控件上我有这样的控件数据绑定事件:
If IsNothing(eInsertArgs) = False Then
Dim _sender As TextBox = sender
_sender.Text = eInsertArgs.Values("_FieldName")
End If
Run Code Online (Sandbox Code Playgroud)
这样做的结果是我在将ASP.NET绑定到默认(空白)模板后将值设置为提交的值.
请帮我找一个不太可怕的解决方案.:)
将包含ASP.NET页面的功能部署到开发SharePoint服务器时,我收到以下错误:
System.InvalidOperationException:找不到ObjectDataSource'odsYears'的TypeName属性中指定的类型.
我们的.dll正在部署到GAC,我们的页面将被部署到12个配置单元中的相应功能目录中.我们在Sandbox SharePoint服务器上没有收到此错误.我拆解了.dll,以确保正在部署该类,一切看起来都不错.
有没有人知道为什么这不适用于我们的某个SharePoint环境?
谢谢.
环境:asp.net框架2.0
我遇到了自定义对象的Delete方法问题ObjectDataSource.的Select,Insert和Update方法的正常工作.
这是类的代码:
public class Car
{
public string ID {get; set;}//I know this is 3.0+ syntax.
public string Description {get; set;}//I know this is 3.0+ syntax.
public bool Equals(Car other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.ID == ID;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
return obj.GetType() == typeof (Car) && Equals((Car) …Run Code Online (Sandbox Code Playgroud) 关于我正在做的事情的一些快速背景:
我的问题如下:是否有可能以某种方式"拦截"从ObjectDataSource返回的集合,以便我可以在将集合传递给RadGrid之前对其进行操作?
如果这是不可能的; 这不是一个破坏者.我相信我可以修改Select()方法来接受这两个列表; 并在那里进行操作.我的另一个途径是为网格实现NeedDataSource()事件,并在那里进行操作.
理想情况下,我想使用第一个选项.有没有人成功这样做过?
我已经配置了a GridView来填充数据ObjectDataSource.这只ObjectDataSource需要一个绑定到a的参数DropDownList.这一切都运作良好.
当我加载页面时,它会填充DropDownList并且显示的任何字段都将DropDownList作为参数传递给ObjectDataSource进一步填充的页面GridView.
现在,我想要增强功能,并且有一个TextBox和Button旁边这个DropDownList.我想给我的用户选择一个值,或者选择一个值DropDownList,或者输入TextBox和输入更新GridView.
知道怎么做吗?
我尝试了一下dataSource.Selecting活动.但它没有像我想要的那样工作.请帮忙
objectdatasource ×10
asp.net ×8
c# ×5
formview ×3
data-binding ×2
gridview ×2
.net-3.5 ×1
ado.net ×1
insert ×1
paging ×1
parameters ×1
postback ×1
radgrid ×1
sharepoint ×1
telerik ×1
textbox ×1
vb.net ×1