c# - RadGrid - 每列批量编辑多个编辑模板

标签 c# javascript asp.net telerik

我可以根据后面代码中的数据为每列创建不同的控件,并且它可以工作。

我想在代码后面的每一行创建不同的控件。 示例:

    <EditMode>
          ColumnA             ColumnB
 Row I:   RadComboBox         RadComboBox
 Row II:  RadNumericTextBox   RadNumericTextBox
 Row III: CheckBox            CheckBox
 ...

问题是 Rad-grid Batch 模式在每一列的一个编辑模板中只有一个控件,这意味着所有行都具有相同的编辑模板和控件。

这个我能做到

     ColumnA (RadComboBox)     ColumnB(RadNumericTextBox)
     Row I:   RadComboBox               RadNumericTextBox
     Row II:  RadComboBox               RadNumericTextBox
     Row III: RadComboBox               RadNumericTextBox

每列是否可以有多个编辑模板或者我的替代方案是什么?

最佳答案

您可以向网格的 ItemDataBound 事件中的单元格添加控件。在下面的示例中,我将单元格的内容更改为您列出的控件类型,而不是仅显示其默认文本 ID。无论您的情况如何,您都可以做同样的事情。我在 rgTest_OnNeedDataSource 方法中使用测试数据填充示例网格,然后在 rgTest_ItemDataBound 方法中应用更改。

aspx:

<telerik:RadGrid ID="rgTest" runat="server" PageSize="10" GridLines="None" AccessKey="0" Skin="Office2007" 
OnNeedDataSource="rgTest_OnNeedDataSource" OnItemDataBound="rgTest_ItemDataBound" AllowFilteringByColumn="true" AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false" ImagesPath="~/Skins/Office2007/Grid/Images">
    <MasterTableView>
        <Columns>
            <telerik:GridBoundColumn UniqueName="ID" DataField="ID" SortExpression="ID" HeaderText="ID" HeaderStyle-Width="40px" FilterControlWidth="40px" AllowSorting="true" AllowFiltering="true" AutoPostBackOnFilter="false" ShowFilterIcon="true" />
            <telerik:GridBoundColumn UniqueName="Value" DataField="Value" SortExpression="Value" HeaderText="Value" HeaderStyle-Width="80px" FilterControlWidth="40px" AllowSorting="true" AllowFiltering="true" AutoPostBackOnFilter="false" ShowFilterIcon="true" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

aspx.cs:

protected void rgTest_OnNeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    DataTable batchChecks = new DataTable("checksRandomName");
    batchChecks.Columns.Add("ID");
    batchChecks.Columns.Add("Value");
    batchChecks.Rows.Add(new ArrayList() { "1", "ABC" }.ToArray());
    batchChecks.Rows.Add(new ArrayList() { "2", "BCD" }.ToArray());
    batchChecks.Rows.Add(new ArrayList() { "3", "CDE" }.ToArray());
    batchChecks.Rows.Add(new ArrayList() { "4", "DEF" }.ToArray());
    DataSet dsBatch = new DataSet("rcBatch");
    dsBatch.Tables.Add(batchChecks);
    rgTest.VirtualItemCount = dsBatch.Tables.Count;
    rgTest.DataSource = dsBatch;
}

protected void rgTest_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = (GridDataItem)e.Item;
        TableCell cell = item["Id"];
        switch (cell.Text)
        {
            case "1":
                cell.Controls.Add(new RadComboBox());
                break;
            case "2":
                cell.Controls.Add(new RadNumericTextBox());
                break;
            case "3":
                cell.Controls.Add(new System.Web.UI.WebControls.CheckBox());
                break;
        }
    }
}

关于c# - RadGrid - 每列批量编辑多个编辑模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24699428/

相关文章:

c# - 来自查询字符串返回请求的 Web API 可选参数缺少正文

c# - SQL 事务如何工作?

javascript - 如何使用 javascript 识别唯一设备?

javascript - Angularjs动态添加带有子元素和模型的新div

c# - 找不到行时在转发器中显示消息

iphone - iPhone 上的 Chrome 模拟器?

c# - TFS 2008 使用 C# 应用标签

c# - WCF channel 是否有可能在检查状态(单线程)后立即出错?

javascript - 如何在页面上的多个按钮上获得 1 个模态?

asp.net - ServiceStack 示例应该以什么顺序进行处理?