Telerik Radgrid如何从代码后面添加文本框列



我正在从代码后面向RadGrid添加列。在NeedDataSource事件中,我将一个DataTable(有10列)绑定到radgrid
到这里为止一切都很顺利。但我希望在两列中有文本框(在加载时,而不仅仅是在编辑模式下)。

<telerik:RadGrid ID="RadGrid1" runat="server" ShowHeader="true" 
        OnNeedDataSource="RadGrid1_NeedDataSource" OnPreRender="RadGrid1_PreRender"
        AutoGenerateColumns="true" >
        <MasterTableView>
        </MasterTableView>
</telerik:RadGrid>

如果是声明性的,那么列定义应该是这样的。但我希望它能从代码后面完成。

<telerik:GridTemplateColumn HeaderText="Qty">
                <ItemTemplate>
                    <input id="<%# this.GetUniqueId("Qty", Container.DataItem)%>" name="<%# this.GetUniqueId("Qty", Container.DataItem)%>" type="text" value="<%# Eval("Quantity")%>" size="2" maxlength="3"  />
                </ItemTemplate>
</telerik:GridTemplateColumn>

像创建其他列类型一样创建TemplateColumn,并将模板对象设置为ItemTemplate(HeaderTemplate和FooterTemplate也可以这样做)。但是您必须定义自定义模板类来实现ITemplate

你可以在这里找到一个例子:

http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html#Section4

必须使用模板列吗?如果可以直接将列绑定到数据源字段,请使用GridNumericColumn。这可以从代码后面动态添加:

        GridNumericColumn numColumn = new GridNumericColumn();
        numColumn.UniqueName = "ColumnId";
        numColumn.MaxLength = 20;
        numColumn.HeaderText = "My Numeric Column";
        numColumn.DataField = "Qty";
        numColumn.DataFormatString = 
        myGrid.MasterTableView.Columns.Add(numColumn);
   Use This.
   GridTemplateColumn tempCol;
    for (int i = 0; i < obj.Count; i++)
    {
        tempCol = new GridTemplateColumn();
        this.gvwRejection.MasterTableView.Columns.Add(tempCol);
        tempCol.ItemTemplate = new DynamicTemplateCoulmn"txtCategoryQty"+ , "numericTextBox");
        tempCol.HeaderText = objRejectionCategoryMasterObject[i].CategoryName.Trim();
        tempCol.UniqueName = "CategoryQty" + i;
        tempCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
        tempCol.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
        tempCol.FooterStyle.HorizontalAlign = HorizontalAlign.Right;
        RejCategoryIDs[i] = objRejectionCategoryMasterObject[i].RejCategoryID;
    }
    tempCol = new GridTemplateColumn();
    this.gvwRejection.MasterTableView.Columns.Add(tempCol);
    tempCol.ItemTemplate = new DynamicTemplateCoulmn("txtTotal", "numericTextBoxReadOnly");
    tempCol.HeaderText = "Total";
    tempCol.UniqueName = "Total";
    tempCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
    tempCol.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
    tempCol.FooterStyle.HorizontalAlign = HorizontalAlign.Right;

最新更新