如何以编程方式将值添加到ASP.NET中的datalist / datasource?

时间:2013-12-08 03:15:28

标签: c# asp.net

我需要一种向DataList添加值的方法,这些方法不是来自DataList所连接的SQLDataSource。这些值不一定在我的数据库中找到,但仍然需要显示在我已有的DataList中。

在我的页面上,我有这样的结构:

DataListA
    Hidden Field
    Label
    DataListB
    SQLDataSourceB

SQLDataSourceA

我正在寻找以编程方式向SQLDataSourceB添加条目(自定义条目)的方法,以便DataListB包含我需要在DataListB中显示的这些额外行。我查看了Pre_Render事件和示例,例如找到here,但我不需要更改条目,也不需要改变它们的样式。我正在寻找添加自定义条目,有没有办法做到这一点?


编辑: DataListB显示的结果是“部门”,“代码”和“名称”。这些是展示学校课程。即,典型结果如下:ART 3000 Photography 。我希望添加到DataListB的课程是自定义课程,其格式与上面的示例相同。这背后的原因 - 如果我在DataListB中显示ART 3000 Photography,我想显示SCI 1000 Biology而不是显示ART 3000 Photography,我希望SCI 1100 Chemistry。这是一个很多案例,我需要能够检查我正在显示的课程(在页面加载之前)并更改我需要添加到DataListB的自定义类。

@ ethorn10 我有两个主要需求,即将这些自定义课程添加到我的DataList中。第一种情况是针对一系列课程。对于此范围内的表中显示的每个类,都会更改此池中需要的x个类数。例如,假设我有一系列具有1000到3000的“代码”的类。此范围内应该(至少)显示在表中的类的限制是6.因此,(我实现了一些标签)排序,而不是数据主义者中的条目是必要的)我希望用户看到“在1000到3000之间的6个以上的类”。对于显示的此范围内的每个课程,我希望“6”递减,因此如果在该范围内采用一个类,则显示/标签应为“在1000到3000之间的另外5个类”。

第二种情况类似于第一种情况,但不是包含1000到3000,而是有一个不同类的池。因此它变为“你需要从这些类中增加2个类:1200,1350,2300等......”

1 个答案:

答案 0 :(得分:0)

您可以使用DataView获取SqlDataSource数据,然后将DataView转换为Datatable。之后,您可以将自定义数据Rows添加到DataTable

DataView dv =(DataView)SqlDataSource1.Select(new DataSourceSelectArguments());
DataTable dt = dv.ToTable();
dt.Rows.Add(1, "item1", "item2", 3, "item4"); //the number of param should match the number of column you query returns
GridView1.DataSource = dt; //binding the datatable to a gridview after adding customer record
GridView1.DataBind();