使用对象插入ObjectDataSource

时间:2013-02-01 05:46:52

标签: c# asp.net objectdatasource

我正在尝试学习ASP.NET,并希望使用ObjectDataSource来选择并插入到数据库中。我使用的是具有insert对象作为参数的insert方法的业务类。我看过的几个消息来源说这是一种正确的方法,但是我无法找到如何在代码隐藏文件中使用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>

2 个答案:

答案 0 :(得分: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)
  {
  }
}

答案 1 :(得分: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。

它适用于我。

感谢。