简体   繁体   中英

RadGrid: Get the modified Items on edit

On a RadGrid I can use the CommandItemTemplate to define my own buttons for, in my case, Save and Cancel the edit (like below)

 <CommandItemTemplate> <div style="padding: 5px 5px;"> <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited">Update</asp:LinkButton> <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll">Cancel editing</asp:LinkButton> </div> </CommandItemTemplate> 

On the code behind, I set up the ItemCommand.

> protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
    if (e.CommandName.CompareTo("UpdateEdited") == 0)
    {
        var commandItem = ((GridCommandItem)e.Item);
        //Updade code here.
    }
}

How can I access the modified row with the modified fields so I can perform an updade?

You should have them in command item and you can access them like this:

GridDataItem item = (GridDataItem)e.Item;
string value = item["ColumnUniqueName"].Text;

Is this what you want ? Just a sample you might need to modify it..

.aspx

<telerik:RadGrid ID="rg" runat="server" AutoGenerateColumns="false" 
 OnNeedDataSource="rg_NeedDataSource" OnItemCommand="rg_ItemCommand" 
 MasterTableView-CommandItemDisplay="Top" OnItemDataBound="rg_ItemDataBound">
        <MasterTableView EditMode="InPlace">
            <CommandItemTemplate>
                <div style="padding: 5px 5px;">
                    <asp:LinkButton ID="btnUpdateEdited" runat="server" 
                     CommandName="UpdateEdited">Update</asp:LinkButton>
                    &nbsp;
                    <asp:LinkButton ID="btnCancel" runat="server" 
                     CommandName="CancelAll">Cancel editing</asp:LinkButton>                        
                </div>
            </CommandItemTemplate>
            <Columns>
                <telerik:GridTemplateColumn>
                    <ItemTemplate>
                        <asp:Label ID="lbl" runat="server" 
                         Text='<%# Eval("A") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txt" runat="server" 
                         Text='<%# Eval("A") %>'></asp:TextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn>
                    <ItemTemplate>
                        <asp:LinkButton ID="btnEdit" runat="server" Text="Edit" 
                         CommandName="Edit"></asp:LinkButton>
                    </ItemTemplate>
                    <EditItemTemplate>&nbsp;</EditItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
</telerik:RadGrid>

.cs

protected void Page_Load(object sender, EventArgs e)
{
    // Check
    if (!IsPostBack)
    {
        // Variable
        DataTable dt = new DataTable();
        dt.Columns.Add("A");
        dt.Rows.Add("A1");

        // Check & Bind
        if (dt != null)
        {
            // Viewstate
            ViewState["Data"] = dt;

            rg.DataSource = dt;
            rg.DataBind();

            dt.Dispose();
        }
    }
}

protected void rg_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    rg.DataSource = ViewState["Data"] as DataTable;
}

protected void rg_ItemCommand(object sender, GridCommandEventArgs e)
{
    // Check
    if (e.CommandName == "UpdateEdited")
    {
        // Variable
        DataTable dt = new DataTable();
        dt.Columns.Add("A");

        // Loop All
        foreach (GridEditableItem item in rg.Items)
        {
            // Find Control
            TextBox txt = item.FindControl("txt") as TextBox;

            // Check & Add to DataTable
            if (txt != null) dt.Rows.Add(txt.Text.Trim());
        }

        // Check
        if (dt != null && dt.Rows.Count > 0)
        {
            // Set Viewstate
            ViewState["Data"] = dt;

            // Bind
            rg.DataSource = dt;
            rg.DataBind();

            // Dispose
            dt.Dispose();
        }
    }
    else if (e.CommandName == "CancelAll")
    {
        // Clear Edit Mode
        rg.MasterTableView.ClearChildEditItems();

        // Rebind
        rg.Rebind();            
    }
}

protected void rg_ItemDataBound(object sender, GridItemEventArgs e)
{
    // Check
    if (e.Item is GridCommandItem)
    {
        // Find Control
        LinkButton btnUpdateEdited = e.Item.FindControl("btnUpdateEdited") as LinkButton;
        LinkButton btnCancel = e.Item.FindControl("btnCancel") as LinkButton;

        // Get is Edit Mode ?
        if (rg.EditIndexes.Count > 0)
        {
            if (btnUpdateEdited != null) btnUpdateEdited.Visible = true;
            if (btnCancel != null) btnCancel.Visible = true;
        }
        else
        {
            if (btnUpdateEdited != null) btnUpdateEdited.Visible = false;
            if (btnCancel != null) btnCancel.Visible = false;
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM