I have an asp.net webpage that contain a gridview with edit, select and delete enabled, and a detailview for inserting new record. Each control is placed inside a asp.net ajax extension control-updatepanel. And the two controls are bonded to the same datasource which is LinqDataSource.
After new record was inserted nothing display in the gridview until user refresh the page.
Did I miss something? Can anyone help?
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<fieldset>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="TermLinqDataSource" AllowPaging="True" AllowSorting="True"
DataKeyNames="TermID">
<Columns>
<asp:CommandField
ShowSelectButton="True" />
<asp:BoundField DataField="RowIndex" HeaderText="RowIndex"
InsertVisible="False" SortExpression="RowIndex" Visible="False" />
<asp:BoundField DataField="TermID" HeaderText="Term" ReadOnly="True"
SortExpression="TermID" />
<asp:BoundField DataField="StartDate" HeaderText="Start Date"
SortExpression="StartDate" DataFormatString="{0:d}" />
<asp:BoundField DataField="EndDate" HeaderText="End Date"
SortExpression="EndDate" DataFormatString="{0:d}" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<br />
<h4>Add New Term:</h4>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DetailsView ID="addNewTerm" runat="server"
AutoGenerateRows="False" DataKeyNames="TermID"
DataSourceID="TermLinqDataSource" DefaultMode="Insert">
<FieldHeaderStyle Font-Bold="true" />
<Fields>
<asp:BoundField DataField="TermID" HeaderText="Term:" SortExpression="TermID"
ReadOnly="True" />
<asp:BoundField DataField="StartDate" HeaderText="Start Date:"
SortExpression="StartDate" />
<asp:BoundField DataField="EndDate" HeaderText="End Date:"
SortExpression="EndDate" />
<asp:CommandField ShowInsertButton="True" />
</Fields>
</asp:DetailsView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:LinqDataSource ID="TermLinqDataSource" runat="server"
ContextTypeName="CETMSClient.RegistraDCsDataContext" EnableDelete="True"
EnableInsert="True" EnableUpdate="True" TableName="Terms"
OrderBy="RowIndex desc" >
</asp:LinqDataSource>
I think you need to bind gridview again after insertion.
Visit msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.iteminserted.aspx