【问题标题】:Telerik Radgrid How to add textbox column from code behind?Telerik Radgrid 如何从后面的代码中添加文本框列?
【发布时间】:2012-03-06 00:35:36
【问题描述】:

我正在从后面的代码向 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>

【问题讨论】:

    标签: asp.net telerik radgrid


    【解决方案1】:

    像任何其他列类型一样创建 TemplateColumn 并将模板对象设置为 ItemTemplate(您可以对 HeaderTemplate 和 FooterTemplate 执行相同操作)。但是您必须定义自定义模板类,女巫将实现ITemplate

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

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

    【讨论】:

      【解决方案2】:

      您必须使用模板列吗?如果您可以直接将列绑定到数据源字段,请使用 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);
      

      【讨论】:

        【解决方案3】:
           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;
        

        【讨论】:

        • 请添加一些解释。仅代码的答案通常不是很有用。
        • 包含一些关于它在做什么的文字可能会有所帮助
        • GridTemplateColumn 用于创建列。创建该列后,我们设置该列的不同属性。然后将该列添加到该网格中,因为我在上面的代码 this.gvwRejection.MasterTableView.Columns.Add(tempCol);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多