我正在尝试学习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>
答案 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。
它适用于我。
感谢。