最近,我一直在觀察有關數據綁定的Plural Sight ASP.NET視頻,並且我遇到了聲明性數據源控件,如<asp:SqlDataSource />
。通過SqlDataSource將數據插入到數據庫表中
我無法理解爲什麼我無法將默認電影標題和發佈日期插入到sql server 2008數據庫的電影表中。直到現在我還沒有遇到任何問題,並且已經能夠通過SelectCommand通過gridView訪問表格,但是當我單擊插入電影按鈕時,新的手動製作的電影參數不會添加到表格中。
這裏是我的一個更好的看代碼:在參數標籤ASP
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>
正如你可以看到上面,我沒有足夠的類型=「...」,而在此之前,我有類型等於release_date的title和dateTime的字符串。問題可能是我在數據庫中設置的值與上面聲明的值不同嗎?
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();
}
我不能發表圖片呢,所以添加網格是不可能的,即使它會幫助,如果你能查看錶本身..但無論如何,一旦按鈕被點擊,表格保持不變,當我查看數據庫時,新值不會被添加。
「release_date」]。DefaultValue =「01/01/2008」; 發佈日期真的是一個字符串嗎? –
@SteveWellens release_date類型是DateTime,在用戶控件表單中指定。我相信當你插入參數時,他們都需要用引號。謝謝 –
對,也許這將有助於明確設置類型,例如:SqlDataSource1.SelectParameters [0] .DbType = DbType.Date; –