Прежде всего, вы бы не хотели этого делать. Это противоречит концепции контроля пользователя.
Если вы хотите изменить вид сетки, используя состояние пользовательского элемента управления, вы можете выставить состояние элемента управления и заставить вид сетки вести себя в соответствии с этим состоянием.
// This handles rowdatabound of gridview
OnRowDataBound(object sender, RowDataBoundEventArgs e)
{
var control = e.Row.Find("UserControlId");
if (control.SomeProperty == SomeValue)
someTextBox.Value = "something";
}
Если вам действительно нужно передать дескриптор gridview пользовательскому элементу управления, определите свойство для пользовательского элемента управления типа grid:
// This is a property of user control
public GridView Container { get; set; }
и установите контейнер элемента управления в сетку, прежде чем получить к нему доступ.
userControl.Container = gridView;
Если пользовательский элемент управления является частью шаблона элемента в сетке, поскольку ваш пользовательский элемент управления создается во время создания строк вида сетки, вы можете сделать это только после привязки своего вида сетки.
Наконец, для вызова функции на странице контейнера вы можете выставить событие внутри своего пользовательского элемента управления и связать его с этим событием.
public delegate void SomethingHappenedEventHandler(object sender, EventArgs e);
// In user control:
public event SomethingHappenedEventHandler SomethingHappened;
// Trigger inside a method in user control:
SomethingHappenedEventHandler eh = SomethingHappened;
if (eh != null) eh(this, EventArgs.Empty);
// In page:
userControl.SomethingHappened = new SomethingHappendEventHandler(OnSomething);
private void OnSomething(object sender, EventArgs e)
{
// When something happens on user control, this will be called.
}