Вы можете реализовать событие 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
элемента управления, когда это возможно, поскольку оно локализует функциональность только для элемента управления и дает вам гибкость, позволяющую легко заменять элементы управления и функции, не беспокоясь о влиянии на другие вещи.