【问题标题】:CheckBoxField in an ASP.Net Dynamic dataset loaded GridView加载 GridView 的 ASP.Net 动态数据集中的 CheckBoxField
【发布时间】:2015-05-01 18:49:28
【问题描述】:

我正在制作一个包含动态 gridView 的 ASP.Net 网页。 用户应该能够通过用户名在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.

不管怎样,我明白了。

值的类型与列类型不匹配无法在禁止列中存储 。预期类型是 CheckBoxField。

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

【问题讨论】:

  • @Mate 尝试过,得到相同的消息(“预期类型为布尔值”)
  • @Mate 这是一个复选框 - 调试器读取 &lt;&gt;
  • @A.Abramov 看看我的回答,如果你解决了,请告诉我。

标签: c# asp.net gridview types dataset


【解决方案1】:

问题是,除了CheckBoxField to 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
    };

这不是不同的,你也可以在BannedAdmin列中添加@ 987654329。

希望会有所帮助。

【讨论】:

  • 谢谢,我一拿到我的代码就会检查它。如何在单元格中放置 gridView“编辑”按钮(触发事件的按钮)?
  • @A.Abramov 很好,有几种方法可以添加编辑按钮,例如TemplateField 或内置Edit Button
  • 我已经有一个了。我的问题是,如果我想在数据集中包含该按钮,我怎样才能做到这一点? span>
  • 您无法在@ 9876543333 @,dataTable数据类型属性只支持原始.NET框架数据类型看看This。 span>
  • 那你建议怎么解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2018-12-21
  • 1970-01-01
  • 2017-11-16
  • 2014-09-06
相关资源
最近更新 更多