【问题标题】:How to make gridview show the all data column within templated fields?如何使gridview显示带有模板字段的所有数据列?
【发布时间】:2012-10-14 05:35:30
【问题描述】:

我在 Asp.net 中有一个项目,有人将数据插入到 SQL Server 数据库中,当他想调用最新插入的数据时(对于这个项目,我已经编写了一个存储过程,所以我将在 gridview 中使用它)他必须按下 gridview 的按钮才能将它们全部显示出来。

在gridview中我想添加我自己的模板(因为我有一些项目以及必须自己添加的Jquery Calendar)并将它绑定到服务器并选择存储过程来读取它。所以我必须从数据库读取数据的代码在这里:

protected void Button2_Click(object sender, EventArgs e)
{
        SqlDataReader dr = DataProvider.ExecuteDataReader("[dbo].[Get_LastIdHowzeEducationFinishDate_SP]", CommandType.StoredProcedure);
        GridView1.DataSource = dr;

        SqlDataReader dr2 = DataProvider.ExecuteDataReader("[dbo].[Get_LastIdHowzeEducationField_SP]", CommandType.StoredProcedure);
        GridView1.DataSource = dr2;
        GridView1.DataBind();
}

但我不知道为什么只显示其中一个(第二个)同时我想在 gridview 中显示一些其他数据列。

这是我写的第一个存储过程:

ALTER PROCEDURE [dbo].[Get_LastInsertedRowHowzeEducation_SP]
AS
BEGIN 
    SELECT
        he.FieldName as 'رشته تحصیلی',
        he.SchoolName as 'نام موسسه آموزشی',
        he.StudyCityDescribtion as 'محل تحصیل',
        he.Average as 'معدل',
        he.ThesisTitle as 'عنوان پایان نامه',
        he.Describtion as 'توضیحات' 
    FROM
        PersonHowEducation prh 
    INNER JOIN
        HowzeEducation he ON prh.HowzeEducationId = he.HowzeEducationId
    WHERE
        prh.IdCode = (SELECT IdCode FROM Persons 
                      WHERE IdCode = IDENT_CURRENT('persons'))
END

但是通过这段代码,我无法将 Jquery 日历添加到 gridview 中,所以我决定将它们分开,并为每一列编写一个过程,并通过 select 语句和 gridview 模板字段在 gridview 中调用它们。这是两个分离的存储过程:

ALTER PROCEDURE [dbo].[Get_LastIdHowzeEducationFinishDate_SP]

AS
BEGIN 
select he.FinishLevelDate as 'تاریخ اتمام سطح'
   from PersonHowEducation prh inner join HowzeEducation he on 
          prh.HowzeEducationId=he.HowzeEducationId
          where prh.IdCode=
          (Select IdCode from Persons where IdCode=IDENT_CURRENT('persons'))

END

和其他:

 ALTER PROCEDURE [dbo].[Get_LastInsertedRowHowzeEducation_SP]

AS
BEGIN 
select he.FieldName as 'رشته تحصیلی',he.SchoolName as 'نام موسسه آموزشی',
   he.StudyCityDescribtion as 'محل تحصیل',he.Average as 'معدل',
   he.ThesisTitle as 'عنوان پایان نامه',
   he.Describtion as 'توضیحات' 
   from PersonHowEducation prh inner join HowzeEducation he on 
          prh.HowzeEducationId=he.HowzeEducationId
          where prh.IdCode=
          (Select IdCode from Persons where IdCode=IDENT_CURRENT('persons'))

END

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    显示第二个是因为您在转到GridView1.DataSource = dr2; 时覆盖了第一个数据源

    【讨论】:

    • 我知道,但我想让它们都可见。我的意思是我怎样才能同时显示它们,甚至显示更多的程序。
    【解决方案2】:

    一般来说,GridView 应该用于一组数据。如果您想显示多组数据,您应该使用多个 GridView,或者您可以使用 UNION 来连接数据或嵌套 GridView,但这确实会使设置复杂化。

    如果您发布有关您正在尝试做什么或您正在使用的存储过程的更多信息,我们可能会提供更多帮助。

    【讨论】:

    • 好的。我将在上面编辑我的问题,并添加我的存储过程和其余代码。
    • 我仍然不确定您在 GV 中要做什么以及为什么需要分离 SP 以使用 Jquery 日历。我不知道有一种方法可以使用 2 个 SP 来填充 GV,而不是创建一个从两个存储过程和一个数据读取器手动填充的对象的通用列表。
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2017-07-24
    • 2012-04-23
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多