当前位置:  开发笔记 > 编程语言 > 正文

DataSet - 类模型 - 如何从DataSet获取Bool值

如何解决《DataSet-类模型-如何从DataSet获取Bool值》经验,为你挑选了1个好方法。

我是C#和ASP.net的新手.我是ColdFusion程序员,但我正在接触ASP.net.

我会详细说明然后问我的问题....

我已经能够从服务层类文件(或业务逻辑层)后面的代码调用它,然后在那个调用数据访问层类文件.我一直在从数据访问层发送一个DataSet然后在Code Behind中将代码移到一个表中,这样我就可以逐行读取它.

当我在编辑屏幕上时,我正在寻找一种获取布尔值的方法,以便在我找到此帖子时设置复选框以进行检查.

C#为DataRow赋值["haswhatnots"] = hasWhatnots非常慢

我看到提到他们应该......

或者 - 使用类模型而不是DataTable,如果它是我认为的那么听起来很棒.

使用类文件来回退数据以及数据应该采用什么格式的CRUD屏幕的最佳方法是什么?

我习惯于在QuerySet中返回ColdFusion数据,然后我们可以遍历它.我们可以将他的查询转换为Array of Structures或者Array of Obects,XML或JSon,但我仍然遇到了解我如何从DataSet中获取数据的问题.我现在得到String Data很好但也许有一个非常简单的例子可能有一页...

我想弄清楚如何立即获取布尔值是我当前的问题.

感谢任何帮助,内森

PS如果有更好的更专业的方式来做到这一点让我知道.我想继续使用(Presentation/CodeBehind/Service/Data Access)类型的图层.

Protected void Page_Load(Object sender, EventArgs e)
{
if(!IsPostBack)
{

DataTable dt = new DataTable();
DataRow dr;

PageService myPage = new PageService();
DataSet ds = myPage.getPages();

int rowCount = ds.Tables[0].Rows.Count;
ds.Columns.Add(new DataColumn("PageID", typeof(Int32)));
ds.Columns.Add(new DataColumn("Name", typeof(String)));
ds.Columns.Add(new DataColumn("PageHTMLContent", typeof(String)));
ds.Columns.Add(new DataColumn("NavigationText", typeof(String)));
ds.Columns.Add(new DataColumn("TopMenu", typeof(Boolean)));
ds.Columns.Add(new DataColumn("SubMenu", typeof(Boolean)));
ds.Columns.Add(new DataColumn("DisplayOrder", typeof(Int32)));
ds.Columns.Add(new DataColumn("Active", typeof(Boolean)));

for (int i = 0; i < rowCount; i++)
{
  dr = dt.NewRow();
  dr[0] = i;
  dr[1] = i.ToString;
  dr[2] = i.ToString;
  dr[3] = i.ToString;
  dr[4] = i;            // Not sure what to do here for the Boolean Value
  dr[5] = i;  // Not sure what to do here for the Boolean Value
  dr[6] = i;
  dr[7] = i;  // Not sure what to do here for the Boolean Value
}

ds.Tables.Add(dt);
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
  PageIDHiddenField.Value = dataRow["PageID"];
  NameTextBox.Text = dataRow["Name"].ToString();
  PageHTMLContentTextBox.Text = dataRow["PageHTMLContent"];
  NavigationTextTextBox.Text = dataRow["NavigationText"];
  TopMenuCheckBox.Checked = dataRow["TopMenu"];           // Not sure what to do here for the Boolean Value
  SubMenuCheckBox.Checked = dataRow["SubMenu"];           // Not sure what to do here for the Boolean Value
  DisplayOrder.Text = dataRow["DisplayOrder"].ToString();
  ActiveCheckBox.Checked = dataRow["Active"];             // Not sure what to do here for the Boolean Value
}
}
}

TheCloudless.. 5

您需要将值转换为正确的类型.因为dataRow索引器属性将返回类型的对象object,所以需要将其强制转换为正确的类型.因此,您需要将其强制转换为Boolean:

TopMenuCheckBox.Checked = (bool)dataRow["TopMenu"];

要做一个循环来迭代DataSet你做的事情,你会做类似的事情:

DataSet ds = myPage.getPages();

foreach (DataRow row in ds.Tables[0].Rows)
{
    PageIDHiddenField.Value = row["PageID"];
    NameTextBox.Text = (string)row["Name"];
    ...
    TopMenuCheckBox.Checked = (bool)row["TopMenu"];
}

您可以使用DataRow索引器属性来获取特定列.



1> TheCloudless..:

您需要将值转换为正确的类型.因为dataRow索引器属性将返回类型的对象object,所以需要将其强制转换为正确的类型.因此,您需要将其强制转换为Boolean:

TopMenuCheckBox.Checked = (bool)dataRow["TopMenu"];

要做一个循环来迭代DataSet你做的事情,你会做类似的事情:

DataSet ds = myPage.getPages();

foreach (DataRow row in ds.Tables[0].Rows)
{
    PageIDHiddenField.Value = row["PageID"];
    NameTextBox.Text = (string)row["Name"];
    ...
    TopMenuCheckBox.Checked = (bool)row["TopMenu"];
}

您可以使用DataRow索引器属性来获取特定列.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有