У вас есть пара опций.
Самый простой - это выставить открытое свойство в пользовательском элементе управления, которое позволит вам сделать это:
<cuc1:CourseUserControl ID="CourseUserControl1" runat="server" CourseCategoryID='<%# (int)Eval("CourseCatID") %>' />
Затем связать данные с пользователемконтроль, как только это свойство назначено.Обратите внимание, что я предполагаю, что категория Int32.Например (обратите внимание, что CourseCategoryID хранит свое значение в закрытом поле, а не в ViewState):
private int _courseCategoryID;
public int CourseCategoryID
{
get { return _courseCategoryID; }
set
{
_courseCategoryID = value;
// TODO: code that initializes the GridView in user control.
this.DataBind();
}
}
Другой вариант - выставить то же свойство и обработать событие RowDataBound и сделать это:
if (e.Row.RowType == DataControlType.DataRow)
{
CourseUserControl courseDetails;
courseDetails = (CourseUserControl)e.Row.FindItem("CourseUserControl1");
// Assuming category ID is Int32
courseDetails.CourseCategoryID = (int)grdCategory.DataKeys[e.Row.RowIndex].Value;
courseDetails.DataBind();
}
Обратите внимание, что я привязываю данные вручную, а не сразу после назначения новой категории пользовательскому элементу управления в текущей строке.
Для получения дополнительной информации см .: GridView.RowDataBound Event (ASP.NET 3.5) или Событие GridView.RowDataBound (ASP.NET 4.0)