如何避免在Gridview中重复数据?

时间:2011-11-29 11:44:03

标签: asp.net data-binding gridview

在Web应用程序中,我将数据绑定到GridView。在GridView中,一些数据正在重复。我想不要一次又一次地显示数据。

例如,Empid在同一列中显示多次。我想不再在该列中显示empid。

3 个答案:

答案 0 :(得分:0)

如果按照您希望重复的列对数据进行分组,然后将其绑定到数据源,则可以将事件绑定到RowDataBound,并检查当前值是否等于之前的值,然后隐藏单元格。

检查this以获取示例。

答案 1 :(得分:0)

您可以为正在使用的特定列实施OnDataBinding事件。我从不使用AutoGenerateColumns,因此对每个单元格进行精确控制非常简单。

例如:

// Create global in your .cs file
string _currentEmpID = string.Empty;

将列定义为:

<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:Literal ID="ltEmpID" runat="server" 
                OnDataBinding="ltEmpID_DataBinding" />
        </ItemTemplate>
    </asp:TemplateField>
    <!-- Your other columns... -->
</Columns>

然后只需实施您的DataBinding活动:

protected void ltEmpID_DataBinding(object sender, System.EventArgs e)
{
    Literal lt = (Literal)(sender);
    string empID = Eval("EmpID").ToString();
    if (!empID.Equals(_currentEmpID))
    {
        lt.Text = empID;
        _currentEmpID = empID;
    }
    else
    {
        lt.Text = string.Empty;
    } 
}

RowDataBound强制您搜索控件,如果将来需要更改,您可能会破坏事件中正在修改的其他内容。因此,我倾向于尽可能使用控件的DataBinding事件,因为它只将功能本地化为控件,并使您可以轻松地更换控件和功能,而不必担心影响其他事情。

答案 2 :(得分:0)

只需在gridview中添加属性AutoGenerateColumns,并为其赋值false。

AutoGenerateColumns="false"