2

当我单击添加记录按钮时,我希望我的列之一具有默认值。我如何在后面的代码中做到这一点?这是一个动态的日期,并且可以一直更改?

4

2 回答 2

3

如果列不是 a ,您可以使用列的属性GridTemplateColumn指定默认值,如下所示:DefaultInsertValue

<telerik:GridBoundColumn DefaultInsertValue="12/21/2012" DataType="System.DateTime" DataField="Column1" UniqueName="Column1"></telerik:GridBoundColumn>

否则,如果是GridTemplateColumn,请查看以下 Telerik 文章:

使用 InPlace 和 EditForms 模式插入值

更新

您还可以使用ItemCommand代码隐藏中的方法指定默认列值:

Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand
    If (e.CommandName = RadGrid.InitInsertCommandName) Then
        'cancel the default operation
        e.Canceled = True

        'Prepare an IDictionary with the predefined values
        Dim newValues As System.Collections.Specialized.ListDictionary = New System.Collections.Specialized.ListDictionary()
        newValues("Column1") = New DateTime(2013, 1, 22)
        newValues("Column2") = "hello"
        newValues("Column3") = Nothing

        'Insert the item and rebind
        e.Item.OwnerTableView.InsertItem(newValues)
    End If
End Sub
于 2013-01-18T20:33:32.900 回答
0

您可以拦截 ItemDataBound 事件,并将内容呈现给控制。

<telerik:RadGrid ID="RadGrid1" AutoGenerateColumns="false" 
    AllowSorting="True" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" 
    OnItemDataBound="RadGrid1_ItemDataBound">
    <MasterTableView DataKeyNames="ID" CommandItemDisplay="Top">
        <Columns>
            <telerik:GridBoundColumn DataField="ID" HeaderText="ID" 
                UniqueName="ID" />
            <telerik:GridBoundColumn DataField="Name" HeaderText="Name" 
                UniqueName="Name" />
        </Columns>
        <EditFormSettings ColumnNumber="1" EditFormType="Template">
            <FormTemplate>
                Name:<asp:TextBox runat="server" ID="NameTextBox"/>
            </FormTemplate>
        </EditFormSettings>
    </MasterTableView>
</telerik:RadGrid>

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
}

protected void RadGrid1_NeedDataSource(object sender, 
    GridNeedDataSourceEventArgs e)
{
    RadGrid1.DataSource = new List<Customer>
        {
            new Customer {ID = 1, Name = "John"},
            new Customer {ID = 2, Name = "Marry"},
            new Customer {ID = 3, Name = "Eric"}
        };
}

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
    {
        var item = e.Item as GridEditFormItem;

        var nameTextBox = item.FindControl("NameTextBox") as TextBox;

        // Insert mode
        if (e.Item.OwnerTableView.IsItemInserted)
        {
            nameTextBox.Text = "Please enter name";
        }
        else // Edit mode
        {

        }
    }

在此处输入图像描述

于 2013-02-04T18:36:16.593 回答