当列不存在时绑定gridview

时间:2016-10-17 09:07:39

标签: c# asp.net gridview

我正在尝试从基于SQL SELECT的数据源绑定gridview。

但是,有时,数据源上不存在列,具体取决于从语句中返回的数据。我只想要一个gridview。

我将如何处理绑定,以免在GridView1.DataBind()上抛出错误?

2 个答案:

答案 0 :(得分:2)

不太确定你是如何做到这一点的,但你可以使用类似的代码检查列:

DataTable dt = GetMyDataFromDatabase();
if (dt.Rows.Count > 0)
{
    if (!dt.Columns.Contains("MyColumn"))
    {
        //do whatever, maybe add the missing column?...
        dt.Columns.Add("MyColumn", typeof(String));
    }
}

另一种选择是不在ASPX上定义列,并在RowDataBoundRowCreated事件的代码隐藏中定义所有列。

答案 1 :(得分:1)

最简单的方法是确保列始终存在于每个查询结果中。如果需要,可以通过插入虚拟列来避免错误。

例如,这是您的默认查询

SELECT columnA, columnB, columnC FROM yourDB

如果缺少columnB

,您可以插入这样的虚拟列
SELECT columnA, NULL AS columnB, columnC FROM yourDB

或者,如果您缺少columnA,它是一个必须具有值

的整数
SELECT 0 AS columnA, columnB, columnC FROM yourDB

另一种选择是只在GridView中使用AutoGenerateColumns="true"。但这样可以减少对设计和布局的控制。