Comment faire pour actualiser GridView après les données de l'insérer?

J'ai un GridView et lorsque certaines données ont été insérées j'ai appelé le DataBind() la méthode sur le contrôle GridView et l'ObjectDataSource le contrôle GridView est lié, mais la GridView ne pas afficher les nouvelles données. Comment puis-je obtenir pour actualiser?

Voici mon ASP.NET code:

<asp:GridView 
ID="grdOrderSignals" 
runat="server" 
DataSourceID="srcOrderSignals" 
DataKeyNames="signal"
EmptyDataText="There are no signals for this order"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="signal" HeaderText="Signal Id"  ReadOnly="True" />
<asp:BoundField DataField="description" HeaderText="Description"  ReadOnly="True" />
<CustomControls:DeleteButtonField ConfirmText="Delete this order signal?" Text="Del" />
</Columns>
</asp:GridView>  
<CustomControls:CustomObjectDataSource
id="srcOrderSignals" 
TypeName="DatabaseComponent.DBUtil" 
SelectMethod="GetOrderSignals" 
DeleteMethod="DeleteOrderSignal" 
EnableCaching="false"
runat="server">
<SelectParameters>
<asp:ControlParameter Name="orderId" ControlID="grdOrders" PropertyName="SelectedValue" />
</SelectParameters> 
<DeleteParameters>
<asp:ControlParameter Name="orderId" ControlID="grdOrders" PropertyName="SelectedValue" />        
<asp:ControlParameter Name="signal" ControlID="grdOrderSignals" PropertyName="SelectedValue" />                    
</DeleteParameters>           
</CustomControls:CustomObjectDataSource> 
<asp:Button ID="btnAddOrderSignal" runat="server" Text="Add Order Signal" OnClick="btnAddOrderSignal_Click" />
<asp:DropDownList ID="ddlSignals" runat="server" Visible="false" />
<asp:Button ID="btnInsertOrderSignal" runat="server" Text="Add" Visible="false" OnClick="btnInsertOrderSignal_Click" />

Voici mon code-behind pour gérer les événements click:

protected void btnAddOrderSignal_Click(object sender, EventArgs e)
{
FillSignals();
btnAddOrderSignal.Visible = false;
ddlSignals.Visible = true;
btnInsertOrderSignal.Visible = true;
}
protected void btnInsertOrderSignal_Click(object sender, EventArgs e)
{
InsertOrderSignal();
btnAddOrderSignal.Visible = true;
ddlSignals.Visible = false;
btnInsertOrderSignal.Visible = false;
srcOrderSignals.DataBind();
grdOrderSignals.DataBind();      
}
protected void InsertOrderSignal()
{
DBUtil DB = new DBUtil();
int orderId = (int)grdOrders.SelectedValue;
string signalId = ddlSignals.SelectedValue;
DB.InsertOrderSignal(orderId, signalId);
}
protected void FillSignals()
{
DBUtil DB = new DBUtil();
DataTable od = DB.GetOrderDetails((int)grdOrders.SelectedValue);
int strategyId = (int)od.Rows[0]["strategyId"];
ddlSignals.DataSource = DB.GetSignals(strategyId);
ddlSignals.DataTextField = "signalId";
ddlSignals.DataValueField = "signalId";
ddlSignals.DataBind();      
}

Dois-je appeler DataBind() sur les deux objets? Qu'ai-je fait de mal?

Merci!

OriginalL'auteur Mark Allison | 2010-11-09