gpt4 book ai didi

c# - 无效操作异常 : ObjectDataSource could not find a non-generic method that has parameters:

转载 作者:行者123 更新时间:2023-11-30 20:01:14 26 4
gpt4 key购买 nike

我正在尝试编码 ObjectDataSource用于本地 ASP.NET 页面。

阅读 MSDN 上的帮助文件总是让我摸不着头脑,想知道它们到底在暗示什么。例如,我不确定我的 TypeName 是什么应该是(尽管该链接有一个有趣的例子)。

一旦我掌握了工作的基础知识,我就会冒险进入更深的水域。

我的 *.aspx 文件的第一行包含我的定义:

<%@ Page Title="Reporter" Language="C#" MasterPageFile="~/local.Master"
AutoEventWireup="true" CodeBehind="Reporter.aspx.cs"
Inherits="AcpServiceNS.Reporter" %>

在此页面中,我有名为 txtStartDatetxtEndDate 的 TextBox 控件以及许多名为 ddlStartTimeddlEndTime< 的 DropDownList 控件ddlActionddlFilter1ddlFilter2

我还有以下 ObjectDataSource :

<asp:ObjectDataSource ID="dsReport" runat="server"
SelectMethod="GetData"
TypeName="System.Data.DataTable"
ConvertNullToDBNull="True" >
<SelectParameters>
<asp:ControlParameter ControlID="txtStartDate" Name="startDate" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="ddlStartTime" Name="startTime" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="txtEndDate" Name="endDate" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="ddlEndTime" Name="endTime" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="ddlAction" Name="action1" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="ddlFilter1" Name="filter1" PropertyName="Text" Type="String" DefaultValue="" />
<asp:ControlParameter ControlID="ddlFilter2" Name="filter2" PropertyName="Text" Type="String" DefaultValue="" />
</SelectParameters>
</asp:ObjectDataSource>

A GridView控件将位于 *.aspx 页面上,并将用于显示数据:

<asp:GridView ID="gvReport" AllowSorting="true" AutoGenerateColumns="false" AllowPaging="true" Font-Size="Small" PageSize="30" Width="100%"
OnRowDataBound="Report_RowDataBound"
OnRowCommand="Report_RowCommand"
DataKeyNames="Op_ID,Serial_Number,Date_Time,Test_Result"
DataSourceID="dsReport"
runat="server">
<Columns>
<asp:TemplateField HeaderText="Op_ID" HeaderStyle-Width="20%">
<ItemTemplate>
<asp:LinkButton ID="lbOp_ID" runat="server" CommandArgument='<%# Container.DataItemIndex %>' CommandName="Op_ID" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Serial_Number" HeaderStyle-Width="20%">
<ItemTemplate>
<asp:LinkButton ID="lbSerial_Number" runat="server" CommandArgument='<%# Container.DataItemIndex %>' CommandName="Serial_Number" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Date_Time" HeaderText="Date_Time" SortExpression="Date_Time" HeaderStyle-Width="20%" />
<asp:BoundField DataField="Test_Result" HeaderText="Test_Result" SortExpression="Test_Result" HeaderStyle-Width="40%" />
</Columns>
</asp:GridView>

为了让它加载一个空数据集,我在我的代码隐藏中创建了这个简单的 stub :

namespace AcpServiceNS {

public partial class Reporter : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e) {
}

[DataObjectMethod(DataObjectMethodType.Select)]
protected static DataTable GetData(string startDate, string startTime, string endDate, string endTime,
string action1, string filter1, string filter2) {
var table = new DataTable();
table.Columns.Add("Op_ID", typeof(string));
table.Columns.Add("Serial_Number", typeof(string));
table.Columns.Add("Date_Time", typeof(DateTime));
table.Columns.Add("Test_Result", typeof(string));
return table;
}

}

}

是的!上面的内容基本上是一个表定义,但它应该足以启动我的 *.aspx 页面。

当我尝试运行它时,出现以下异常:

System.InvalidOperationException: ObjectDataSource 'dsReport' could not find a non-generic method 'GetData' that has parameters: startDate, startTime, endDate, endTime, action1, filter1, filter2.

看来我已经正确拼写和区分了所有参数,那么我做错了什么?是TypeName使用不当?

最佳答案

来自ObjectDataSource ,我会说是的,你使用的 TypeName 是错误的。在 MSDN 文章中,它指的是承载方法的类,而不是方法的返回类型。

尝试将 TypeName="System.Data.DataTable" 更改为 TypeName="AcpServiceNS.Reporter"

关于c# - 无效操作异常 : ObjectDataSource could not find a non-generic method that has parameters:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com