1

我正在尝试学习 ASP.NET,并希望使用 ObjectDataSource 来选择并插入数据库。我正在使用一个业务类,该类具有一个以对象作为参数的插入方法。我看过的几个消息来源说这是一种正确的方法,但我一直无法找出如何在文件后面的代码中使用 c# 插入数据库。我有一个表单,它使用正常工作的 ObjectDataSources 从其他两个表中提取,但我需要使用一个按钮将我正在创建的记录插入到表中。我似乎无法将我创建的对象添加到 ObjectDataSource 的 InsertParameters 中,所以我想知道是否有这样做的方法。

insert 方法的签名如下所示:

public static void InsertIncident(Incident incident)

Visual Studio 生成的 ASP 代码如下所示:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
  DataObjectTypeName="Incident" InsertMethod="InsertIncident"
  OldValuesParameterFormatString="original_{0}"  SelectMethod="GetIncidents" 
  TypeName="IncidentDB"></asp:ObjectDataSource>
4

2 回答 2

1

我现在觉得有点傻,但我发现我做错了什么。我根本不需要使用 ObjectDataSource 来插入对象。我应该直接调用 insert 方法。

if (IsValid)
{
  Incident i = new Incident();
  i.CustomerID = Convert.ToInt32(ddlCustomer.SelectedValue);
  i.ProductCode = ddlProduct.SelectedValue;
  i.DateOpened = DateTime.Today;
  i.Title = txtTitle.Text;
  i.Description = txtDescription.Text;

  try
  {
    IncidentDB.InsertIncident(i);
  }
  catch (Exception ex)
  {
  }
}
于 2013-02-01T19:30:06.173 回答
0

尝试将您的 ObjectDataSource 更改为以下内容:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Incident" InsertMethod="InsertIncident" SelectMethod="GetIncidents" TypeName="IncidentDB"></asp:ObjectDataSource>

然后,尝试添加 DetailsView 以在数据库中插入记录:

<asp:DetailsView ID="insertData_DetailsView" runat="server" Height="50px" Width="400px" AutoGenerateRows="False" DataSourceID="ObjectDataSource1" DefaultMode="Insert" GridLines="None">

只需确保您的 DV 中有正确的 DataSourceID。

这对我来说可以。

谢谢。

于 2013-02-01T07:14:10.260 回答