我正在从代码后面向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>
答案 0 :(得分:2)
像任何其他列类型一样创建TemplateColumn并将模板对象设置为ItemTemplate(您可以对HeaderTemplate和FooterTemplate执行相同操作)。但是你必须定义自定义模板类,它将实现ITemplate
。
你可以在这里找到一个例子:
http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html#Section4
答案 1 :(得分:1)
您必须使用模板列吗?如果可以直接将列绑定到数据源字段,请使用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);
答案 2 :(得分:0)
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;