新的记录添加到Telerik的radgrid控件 [英] Add new record to Telerik RadGrid

查看:430
本文介绍了新的记录添加到Telerik的radgrid控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下Telerik的radgrid控件,我使用C#其中:

I have the following Telerik RadGrid, which I'm using in C#:

<MasterTableView Width="100%" EditMode= "InPlace" ClientDataKeyNames="menuID" CommandItemDisplay= "Top">
    <Columns>
        <telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" UniqueName="Name"></telerik:GridBoundColumn>
        <telerik:GridTemplateColumn UniqueName="Type" HeaderText="Type">
            <ItemTemplate>
                <asp:TextBox ID="Type" Text='<%# DataBinder.Eval(Container.DataItem, "Type") %>' runat="server"></asp:TextBox>
            </ItemTemplate>
            <EditItemTemplate>
            </EditItemTemplate>
        </telerik:GridTemplateColumn>
        <telerik:GridTemplateColumn UniqueName="List" HeaderText="List">
            <ItemTemplate>
                <asp:CheckBox ID="List" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "List") %>' />
            </ItemTemplate>
            <EditItemTemplate>
            </EditItemTemplate>
        </telerik:GridTemplateColumn>
        <telerik:GridTemplateColumn UniqueName="loadAtStart" HeaderText="loadAtStart">
            <ItemTemplate>
                <asp:CheckBox ID="loadAtStart" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "loadAtStart") %>' />
            </ItemTemplate>
            <EditItemTemplate>
            </EditItemTemplate>
        </telerik:GridTemplateColumn>
    </Columns>
</MasterTableView>

网格填充数据和编辑数据时正常工作。

The grid is populated with data, and working normally when editing the data.

但是当我点击Telerik的所提供的添加新记录按钮,然后一个空行,而不列中的任意文本框或复选框添加到编辑的新行补充说。这只是一个空行。我presume,我要在所谓的ItemDataBound事件动态创建的控件,但我没能找到实际的code这一点。

But when I click on the Add New Record button provided by Telerik, then an empty row is added without any TextBox or CheckBox in the columns to edit in the new Row added. It's just an empty row. I presume that I have to create the controls dynamically in the called ItemDataBound event, but I didn't manage to find the actual code for this.

我该如何解决这个问题?

How do I solve this?

推荐答案

请尝试以下code片段。

Please try with the below code snippet.

ASPX

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
    AllowFilteringByColumn="true" AllowPaging="true" OnItemCommand="RadGrid1_ItemCommand">
    <PagerStyle AlwaysVisible="true" />
    <MasterTableView DataKeyNames="UniqueID" CommandItemDisplay="Top">
        <Columns>
            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn>
                <ItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Name") %>'></asp:TextBox>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
<asp:Button ID="Button1" runat="server" Text="Save All" OnClick="Button1_Click" />

ASPX.CS

public partial class aaaa : System.Web.UI.Page
{

    public List<Employee> lstEmployee
    {
        get
        {
            if (Session["lstEmployee"] != null)
            {
                return (List<Employee>)Session["lstEmployee"];
            }
            else
            {
                return new List<Employee>();
            }
        }
        set
        {
            Session["lstEmployee"] = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<Employee> list = new List<Employee>();

            Employee obj = new Employee();
            obj.ID = 1;
            obj.Name = "Name1";
            obj.UniqueID = Guid.NewGuid();
            list.Add(obj);

            obj = new Employee();
            obj.ID = 2;
            obj.Name = "Name2";
            obj.UniqueID = Guid.NewGuid();
            list.Add(obj);

            lstEmployee = list;
        }
    }

    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        RadGrid1.DataSource = lstEmployee;
    }

    protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == RadGrid.InitInsertCommandName)
        {
            saveAllData();
            lstEmployee.Insert(0, new Employee() { UniqueID = Guid.NewGuid() });
            e.Canceled = true;
            RadGrid1.Rebind();
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        saveAllData();
    }

    protected void saveAllData()
    {
        //Update Session
        foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
        {
            Guid UniqueID = new Guid(item.GetDataKeyValue("UniqueID").ToString());
            Employee emp = lstEmployee.Where(i => i.UniqueID == UniqueID).First();
            emp.Name = (item.FindControl("TextBox1") as TextBox).Text;
        }
    }

}

public class Employee
{
    public Guid UniqueID { get; set; }
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
    public int weeknumber { get; set; }
}

这篇关于新的记录添加到Telerik的radgrid控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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