2011-11-29 34 views
1

在Web應用程序中,我將數據綁定到GridView。在GridView一些數據正在重複。我不想一次又一次地顯示數據。如何避免在GridiVew中重複數據?

例如,Empid在同一列中顯示多個時間。我不想在該列中再次顯示empid。

+1

在將您的數據發送到gridview之前,您應該真的做這個過濾/分組。您的代碼的一部分也可能與該網格的屏幕截圖很好。 – Bastardo

回答

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迫使你要搜索的控制,如果改變在將來你有可能需要br消除事件中正在修改的其他事物。正因爲如此,我傾向於儘可能使用控件的DataBinding事件,因爲它只將功能本地化爲控件,並賦予您靈活性以輕鬆更換控件和功能,而不必擔心影響其他事情。

+0

謝謝凱爾西先生,工作很好,謝謝。 –

0

如果您將您的數據按不希望重複的列綁定到數據源之前進行分組,則可以將事件綁定到RowDataBound,並檢查當前值是否等於先前的值,然後隱藏單元格。

檢查this爲例。

0

只需在gridview中添加屬性AutoGenerateColumns併爲其賦值false即可。

AutoGenerateColumns="false"