ASP.Net 动态数据集中的 CheckBoxField 已加载 GridView

CheckBoxField in an ASP.Net Dynamic dataset loaded GridView

我正在制作一个 ASP.Net 网页,其中包含一个动态 gridView。 用户应该能够通过用户名在 gridView 中搜索特定行;

其中一个字段包含一个复选框,我无法将其加载到数据集中。这是我的部分代码:

        DataTable container = new DataTable();
        DataRow convertedForTable = container.NewRow();
        DataSet final = new DataSet(); 
        container.Columns.Add(new DataColumn("Username", typeof(string)));
        container.Columns.Add(new DataColumn("TimeJoined", typeof(DateTime)));
        container.Columns.Add(new DataColumn("Email", typeof(string)));
        container.Columns.Add(new DataColumn("Banned", typeof(CheckBoxField))); // Here the problem starts
        container.Columns.Add(new DataColumn("Admin", typeof(CheckBoxField))); // That is also a checkboxField.
        container.Columns.Add(new DataColumn("Options", typeof(object))); // And that's a GridView edit field. I have no idea what type it is.
        object[] rowArray = new object[myRow.Cells.Count];
        for (int i = 0; i < myRow.Cells.Count; i++)
            rowArray[i] = myRow.Cells[i].Text;
        convertedForTable.ItemArray = rowArray;
        container.Rows.Add(convertedForTable);
        final.Tables.Add(container); 
        Cache["Users"] = final; // From the cache, the dataset is later loaded & displayed.

总之,我明白了。

Type of value has a mismatch with column typeCouldn't store <> in Banned Column. Expected type is CheckBoxField.

我明白这个错误,虽然我不知道如何修复它。我应该在这些列中输入什么类型?

问题是您要将 CheckBoxField 以外的内容存储到 Banned 列 确保项目类型相同

你可以这样做:

container.Columns.Add(new DataColumn("Username", typeof(string)));
    container.Columns.Add(new DataColumn("TimeJoined", typeof(DateTime)));
    container.Columns.Add(new DataColumn("Email", typeof(string)));
    container.Columns.Add(new DataColumn("Banned", typeof(bool))); 
    container.Columns.Add(new DataColumn("Admin", typeof(bool))); 
    container.Columns.Add(new DataColumn("Options", typeof(object))); 
    object[] rowArray = new object[6];
    rowArray[0] = "Item 0" ;
    rowArray[1] = DateTime.Now ;
    rowArray[2] = "Item 2" ;
    rowArray[3] = true;
    rowArray[4] = false;
    rowArray[5] = "object";

如果您想将 CheckBox 添加到第 3 项和第 4 项,您应该这样做:

container.Columns.Add(new DataColumn("Banned", typeof(CheckBox)));
    container.Columns.Add(new DataColumn("Admin", typeof(CheckBox)));  
    rowArray[3] = new CheckBox()
        {
            ID = "newID3",
            Checked = true// Or your condition based on myRow.Cells[3].Text
        };
    rowArray[4] = new CheckBox()
    {
        ID = "newID4",
        Checked = true// Or your condition based on myRow.Cells[3].Text
    };

这没有什么不同,您还可以将 CheckBoxField 添加到 BannedAdmin 列。

希望能有所帮助。