簡體   English   中英

數據插入后如何刷新GridView?

[英]How to refresh GridView after data insert?

我有一個GridView,當插入一些數據時,我在GridView上調用了DataBind()方法,並且GridView綁定了ObjectDataSource,但GridView不顯示新數據。 我如何讓它刷新?

這是我的ASP.NET代碼:

<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" />

這是我處理點擊事件的代碼隱藏:

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();      
}

我是否需要在兩個對象上調用DataBind()? 我在這做錯了什么?

謝謝!

在您的方法btnInsertOrderSignal_Click中,您將再次添加新項目和數據綁定。 這是正確的,但您沒有在數據綁定()之前更新數據源。 這意味着它將綁定到原始數​​據源。

似乎需要再次調用填充CustomControl的內容。 GetOrderSignals()?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM