加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Telerik RadGrid具有不同类型的编辑控件

发布时间:2020-12-16 09:33:37 所属栏目:asp.Net 来源:网络整理
导读:我必须发布一个字段列表.有些是可编辑的,有些则不是.那些可以是不同的类型,例如文本字段,日期,时间或布尔值.我正在使用Telerik的RadGrid.请参阅我制作的测试项目的屏幕截图. 问题: 在项目创建的处理程序中,为什么有4个单元格?我必须填写单元格[2]和单元格[
我必须发布一个字段列表.有些是可编辑的,有些则不是.那些可以是不同的类型,例如文本字段,日期,时间或布尔值.我正在使用Telerik的RadGrid.请参阅我制作的测试项目的屏幕截图.

问题:
在项目创建的处理程序中,为什么有4个单元格?我必须填写单元格[2]和单元格[3]以显示值.我将AutoGenerateColumns设置为false,我只有两个GridTemplateColumn定义.

为什么item.RowIndex会被两个人包含并最多二十个?当我有10行.

有一个更好的方法吗?

这是我如何声明网格:

<telerik:RadGrid runat="server" ID="Grid1" Width="100%" Height="500px" GridLines="None" AutoGenerateColumns="false"
        OnItemCreated="OnGridItemCreated"
        OnNeedDataSource="OnGridNeedDataSource">
        <ItemStyle Wrap="true" />
        <AlternatingItemStyle Wrap="true" />
        <ClientSettings>                    
            <Selecting AllowRowSelect="false" />
            <Scrolling AllowScroll="true" UseStaticHeaders="true" />
            <Resizing AllowColumnResize="true" ClipCellContentOnResize="true" ResizeGridOnColumnResize="true" EnableRealTimeResize="true" />
        </ClientSettings>
        <MasterTableView>
            <NoRecordsTemplate>
                <asp:Label ID="lblNorec1" runat="server" Text="No records"></asp:Label>
            </NoRecordsTemplate>
            <Columns>
                <telerik:GridTemplateColumn UniqueName="FieldDisplayName" HeaderText="Field Name">
                    <ItemTemplate>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="FieldValue" HeaderText="Value">
                    <ItemTemplate>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
    </telerik:RadGrid>

/

/ grid needs datasource
    protected void OnGridNeedDataSource(object source,GridNeedDataSourceEventArgs e)
    {
        // create a DataSource
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("Field_Display_Name"));
        dt.Columns.Add(new DataColumn("Field_Value"));

    for (int i = 0; i < 10; ++i)
    {
        DataRow dr = dt.NewRow();
        dr["Field_Display_Name"] = "Item Id" + i.ToString();
        dr["Field_Value"] = "Value" + i.ToString();
        dt.Rows.Add(dr);
    }

    ds.Tables.Add(dt);
    Grid1.DataSource = ds;
}

// grid item is created
protected void OnGridItemCreated(object sender,GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = (GridDataItem)e.Item;

       // fill in cells 2 and 3. Why are there 4?

        Label lbl = new Label();
        lbl.Text = "Field " +  item.RowIndex;
        item.Cells[2].Controls.Add(lbl);

        switch (item.RowIndex)
        {
            case 2:
            case 8:
                RadTextBox txt = new RadTextBox();
                txt.ID = "RadTextBox1";
                txt.Text = "hello " + item.RowIndex;
                item.Cells[3].Controls.Add(txt);
                break;
            case 4:
            case 10:
                RadDatePicker dp = new RadDatePicker();
                dp.ID = "RadDatePicker1";
                dp.SelectedDate = DateTime.Now;
                item.Cells[3].Controls.Add(dp);
                break;
            case 6:
            case 12:
                CheckBox cb = new CheckBox();
                item.Cells[3].Controls.Add(cb);
                break;
            default:
                Label lbl2 = new Label();
                lbl2.Text = "Value " +  item.RowIndex;
                item.Cells[3].Controls.Add(lbl2);
                break;
        }
    }
}

alt text http://img193.imageshack.us/img193/1254/customgrid.png

解决方法

如果网格反映了您的实际需求,我建议您使用ASP FormView中的HTML表.您可以在HTML中找出您在此处显示的大部分内容.有很多FormView教程,它看起来更像是你所追求的解决方案.不要试图将那些东西挤进一个radgrid的复杂性让你走向错误的方向.

如果你想一次显示10条记录,那就是gridview / radgrid派上用场的地方,如果它一次只是一条记录,请查看formview.

编辑:我刚刚注意到这个问题就像一年前一样.我希望你还没有等待这个问题的答案!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读