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
添加到 Banned
和 Admin
列。
希望能有所帮助。
我正在制作一个 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
添加到 Banned
和 Admin
列。
希望能有所帮助。