簡體   English   中英

RadGrid:在編輯時獲取修改后的項目

[英]RadGrid: Get the modified Items on edit

在RadGrid上,我可以使用CommandItemTemplate定義自己的按鈕,例如,保存和取消編輯(如下所示)

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

在后面的代碼中,我設置了ItemCommand。

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

如何訪問帶有已修改字段的已修改行,以便執行更新?

您應該將它們放在命令項中,並且可以像這樣訪問它們:

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

這是你想要的嗎 ? 只是一個示例,您可能需要對其進行修改。

.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;
        }
    }
}

暫無
暫無

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

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