我正在尝试在 gridview 中显示 4 行。如果我在数据库中有 2 行,我应该显示 2 个填充行和 2 个空行,如果我在数据库中有 4 个,则显示 4 个填充行,如果我在数据库中没有,则显示 4 个空行。这怎么可能?
我正在使用 C#、Asp.Net 使用 SQl Server 2005。我想使用存储过程使用数据集从数据库中获取结果,然后绑定到gridview。
我想知道逻辑,以便我可以尝试为自己编写代码。希望我很清楚,我希望我所问的是可能的?!
谢谢!
在您的存储过程中,只需创建某种左连接或右连接,即可通过匹配公共列来生成空行。例如,考虑一下:
DECLARE @table AS TABLE
(
one VARCHAR(20) ,
two VARCHAR(30) ,
some_key INT
)
INSERT INTO @table
( one, two, some_key )
VALUES ( 'a', 'b', 1 )
SELECT t.one ,
t.two ,
t.some_key
FROM @table t
RIGHT JOIN ( SELECT 1 AS id
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4 AS id
) x ON x.id = t.some_key
会产生
one two some_key
a b 1
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
然后,您可以将结果集绑定到您的 gridview。
我要解决的方法是使用 gridview 类的 CreateRow() 方法,如
gridView1.CreateRow(int rowIndex,
int dataSourceIndex,
DataControlRowType rowType,
DataControlRowState rowState);
因此,使用标准for
循环创建其中的四个,然后将所需的行附加到 gridview 中的相关行。就像 gridview.Row[i] = SelectedDataBaseRow 或其他东西一样,它会是一些东西(如果你正在使用数据表)
gridView1.SelectRow(i) = dataTable1.Row[i].ItemArray[columnindex].ToString();
希望这可以帮助。