如何刷新GridView中插入数据后? [英] How to refresh GridView after data insert?

查看:230
本文介绍了如何刷新GridView中插入数据后?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个GridView,当某些数据已经插入我已经呼吁GridView和ObjectDataSource控件的GridView中的DataBind()方法绑定到,但在GridView不会显示新数据。我如何得到它刷新?

I have a GridView and when some data has been inserted I have called the DataBind() method on the GridView and the ObjectDataSource the GridView is bound to, but the GridView does not display the new data. How do I get it to refresh?

下面是我的ASP.NET code:

Here's my 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" />

下面是我的code-后面处理click事件:

Here's my code-behind to handle the click events:

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()?我有什么错在这里做什么?

Do I need to call DataBind() on both objects? What have I done wrong here?

谢谢!

推荐答案

在你的方法btnInsertOrderSignal_Click你又加入新的项目和数据绑定。这是正确的,但你不更新数据源绑定()之前。这意味着将结合到原始数据源

In your method btnInsertOrderSignal_Click you are adding a new item and databinding again. This is correct but you are not updating your datasource before databinding(). This means that it will bind to the original datasource.

似乎有什么填充你的CustomControl需要再次调用。 GetOrderSignals()?

It seems that what populates your CustomControl needs to be called again. GetOrderSignals()?

这篇关于如何刷新GridView中插入数据后?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆