【问题标题】:how to fill (write) datacolumn to list<>?如何填充(写入)数据列到列表<>?
【发布时间】:2017-03-14 11:41:12
【问题描述】:

我正在尝试获取带有值的数据列(已填充数据表)并将其写入访问层中存在的自动属性中。目前,我使用的方法是从 sql 中获取数据并将值传递给网格。我正在尝试使用该方法并且已经填充了数据表,但问题是,自动属性仅读取列名,因此我在另一个控件(列表框)中获取列名。以下是我在 BLL 中的方法。

DAL d = new DAL();

public Object getfeechallan(Bal B) 
{
sqlcommand cmd = new sqlcommand("select * from tblfee where fee_challan_No like @abc,d.con");
cmd.parameters.addwithvalue("@abc","%"+b.fee_challan_No+"%");
datatable dt=d.getdatafilter(cmd);
foreach(datacolumn dd in dt.columns)
{
if(dd.columnname=="ftid")
{
list<DataColumn> dc = new list<DataColumn>();
dc.Add(dd);
b.abc=dc;
}

} return dt;


}

我在 DAL 中的方法是

public Datatable getdatafilter(SqlCommand CMD)
{
SqlDataAdapter da = new SqlDataAdapter(CMD);
Datatable dt = new Datatable ();
da.Fill(dt);
return dt;
}

自动属性是

public list<DataColumn> abc {get; set;}

【问题讨论】:

  • 当您说“带有值的数据列”时,请问您到底是什么意思?你是说添加到列表时并不是所有的数据列属性都设置好了?
  • 我的意思是我想将包含在这个名为 'ftid' 的特定列中的值复制到列表中..
  • 这样我们就清楚了。您想要实际的数据列吗?不是数据表行中的数据?数据列正是如此。数据表上的列集合。它们具有名称、数据类型和长度等属性。
  • 是的,只有一列的数据
  • 仔细查看您的代码...除了在找到所需列后继续循环遍历所有列...我看不出有任何问题。将列表分配下的“return dt”移动到“Bal”对象,以便在您找到 col“ftid”后立即退出,如果那是您想要的唯一 col。顺便说一句,当您在分配给“Bal”的列表中查看该列时,该列中缺少哪个值。

标签: c# sql asp.net n-tier-architecture


【解决方案1】:

好的..所以下面应该这样做。

public DataTable getfeechallan(Bal b)
    {
        SqlDataAdapter sdb = new SqlDataAdapter("Select count(*) From reserve", con);
        DataTable dt = new DataTable();
        List<string> dc = new List<string>();

        sdb.Fill(dt);

        foreach (DataRow dd in dt.Rows)
        {
           dc.Add(dd["ftid"].ToString());
        }

        Bal.abc = dc;

        return dt;
    }

另一个观察。除非您需要返回数据表,否则将返回类型更改为“void”。我想您现在需要的所有数据都在“Bal”对象中。

【讨论】:

  • 让我试试,我会得到结果。顺便谢谢
  • Void 不起作用,因为我将此方法作为数据源提供给 gridview 并且 gridview 不接受 void bcoz void 实际上不返回任何内容。
  • 没关系...只是大声思考:)
  • 嗨..你把这个排序了吗?
  • 我还没有机会。我会在尝试后立即发表评论
【解决方案2】:

如果您尝试获取包含特定列中所有值的列表 您不能只引用该列 您需要循环该列的所有行

List<object> values = new List<object>();
for(int i = 0; i < dt.Rows.Count(); i++)
{
    values.Add(dt[i]["columnName"]);
}

【讨论】:

  • 应该可以。我错过了这一点,我必须循环所有行以获取列内容。谢谢雷 H
猜你喜欢
  • 2013-05-11
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多