最近我一直在观看有关数据绑定的 Plural Sight ASP.NET 视频,并且遇到了声明性数据源控件,例如<asp:SqlDataSource />
.
我无法理解为什么我无法在 sql server 2008 数据库中的电影表中插入默认电影标题和发行日期。到目前为止,我还没有遇到任何问题,并且已经能够通过网格视图通过 SelectCommand 访问表,但是当我单击插入电影按钮时,新的手动制作的电影参数不会添加到表中。
这是我的代码以便更好地查看:
InsertCommand="INSERT INTO movies (title, release_date) VALUES (@title, @release_date)"
SelectCommand="SELECT TOP 30 movie_id, title, release_date FROM movies ORDER BY movie_id DESC"
runat="server" ID="_moviesDataSource" DataSourceMode="DataReader">
<InsertParameters>
<asp:Parameter Name="title" />
<asp:Parameter Name="release_date"/>
</InsertParameters>
</asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" Text="Insert new movie"
onclick="Button1_Click" /><br /><br />
<asp:GridView ID="_moviesGridInsert" runat="server" DataSourceID="_moviesDataSource">
</asp:GridView>
正如您在上面可能注意到的,我在 Parameter asp 标记中没有 Type="...",但在此之前,我的类型等于 string 的 title 和 dateTime 的 release_date。问题可能是我在数据库中设置的值与我上面声明的值不同吗?
它的 C# 后端:
protected void Button1_Click(object sender, EventArgs e)
{
Page.MaintainScrollPositionOnPostBack = true;
// TODO - Insert movie (manually inserted with just user input of button click)
_moviesDataSource.InsertParameters["title"].DefaultValue = "My movie";
_moviesDataSource.InsertParameters["release_date"].DefaultValue = "01/01/2008";
_moviesDataSource.Insert();
}
我还不允许发布图像,因此无法添加网格,尽管如果您可以查看表格本身会有所帮助......但无论如何,一旦单击按钮,表格将保持不变,并且当我查看数据库时,没有添加新值。