我試圖通過保存在更新面板內的列表視圖控件插入數據。我用SQL數據源來顯示現有的項目。但爲了插入數據,我使用存儲過程並通過ADO.net實體框架調用它們。我看到一個奇怪的行爲,如果我對SQL數據源使用了直接插入命令,插入模式會在成功插入數據後關閉,但插入模式在我通過存儲過程進行插入時保留(文本框可見)。我已經使用listview_iteminserted甚至將editindex設置爲-1,並將insertitemposition設置爲none。但仍然沒有成功。下面是代碼...Listview控件即使在ASP.net中插入實體框架的項目後也不關閉插入項目
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ValidationSummary ID="vsumSaveProject" runat="server" ValidationGroup="vgrpSaveProject" EnableClientScript="true" SkinID="valSummaryError" DisplayMode="BulletList" HeaderText="Please correct the below errors." CssClass="validation-summary-errors" />
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:ImageButton ID="imgbNew" runat="server"
CausesValidation="False"
CommandName="New"
ImageUrl="../images/listviews/add_icon_mono.gif"
ToolTip="Add New"
Width="25"
onclick="imgbNew_Click" />
</td>
</tr>
<tr>
<td>
<asp:ListView ID="lvProjects" runat="server"
DataKeyNames="Project_Code"
DataSourceID="SQLProjectsDS"
onitemcommand="lvProjects_ItemCommand"
oniteminserted="lvProjects_ItemInserted"
onitemcanceling="lvProjects_ItemCanceling"
onitemediting="lvProjects_ItemEditing">
和SQL數據源如下..
<asp:SqlDataSource ID="SQLProjectsDS" runat="server"
ConnectionString="<%$ ConnectionString %>"
SelectCommand="SELECT Projects.Project_Code, Projects.Project_Name, Projects.Project_Area, Projects.Project_Status, Projects.Display_Mask,Projects.Site_ID SiteID, Site_Details.Site_Nm FROM Projects INNER JOIN Site_Details ON Projects.Site_ID = Site_Details.Site_ID" />
和代碼背後,是...
private void InsertItemstoDB(parameters.....)
{
using(entity framework)
{
Do Insertions using stored procedure
}
}
並且在條目插入事件
protected void lvProjects_ItemInserted(object sender, ListViewInsertedEventArgs e)
{
this.CancelAddNew();
}
private CancelAddNew()
{
lvProjects.InsertItemPosition = InsertItemPosition.None;
imgbNew.Enabled = true;
lvProjects.EditIndex = -1;
}
現在這是山姆e代碼,如果我創建插入命令並將其發送到SQLDataSource.InsertCommand,它的工作原理。使用存儲的Proc插入,插入工作正常,但插入模式保持在顯示中,就好像什麼也沒有發生一樣。在刷新頁面時出現新數據。
請幫助。
在掙扎了很多之後,我不得不通過設置 SQLDataSource.InsertCommand來解決插入查詢的問題。 魔術般地使用SQLDatasource Insert解決了這個問題。我圍繞着它工作,但仍然在尋找答案,爲什麼它不會受到這種限制。 – djSmart 2012-08-07 10:59:01