Telerik Radgrid Как добавить колонку текстового поля из кода позади? - PullRequest
0 голосов
/ 06 марта 2012

Я добавляю столбцы в RadGrid из кода позади.В событии NeedDataSource я связываю DataTable (с 10 столбцами) с radgrid.
Пока все работает хорошо.Но я хотел бы иметь текстовые поля в 2 столбца (при самой загрузке, а не только в режиме редактирования).

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

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

Создайте TemplateColumn, как и любой другой тип столбца, и установите для объекта шаблона ItemTemplate (вы можете сделать то же самое для HeaderTemplate и FooterTemplate).Но вы должны определить пользовательский шаблонный класс, который будет реализовывать ITemplate.

. Пример вы можете найти здесь:

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

1 голос
/ 07 марта 2012

Вы должны использовать шаблон столбца? Если вы можете напрямую связать свои столбцы с полем источника данных, используйте 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);
0 голосов
/ 13 декабря 2012
   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;
...