2012-08-06 76 views
0

我試圖通過保存在更新面板內的列表視圖控件插入數據。我用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插入,插入工作正常,但插入模式保持在顯示中,就好像什麼也沒有發生一樣。在刷新頁面時出現新數據。

請幫助。

+0

在掙扎了很多之後,我不得不通過設置 SQLDataSource.InsertCommand來解決插入查詢的問題。 魔術般地使用SQLDatasource Insert解決了這個問題。我圍繞着它工作,但仍然在尋找答案,爲什麼它不會受到這種限制。 – djSmart 2012-08-07 10:59:01

回答

0

我想你需要在插入一個新項目後重新綁定列表視圖,也就是說它應該被刷新以適應變化。如果您使用UpdatePanel,則可以在插入強制條件後對其進行更新。

+0

嗨,感謝您的回覆。我試過了,但沒有奏效。 :-( – djSmart 2012-08-06 14:21:00