protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) //процедура редактирования записи
{
GridViewRow viewrow = RightsGridView.Rows[e.NewEditIndex];
TableCell cell = viewrow.Cells[0];
for (int i = 0; i < cell.Controls.Count; i++)
{
String s = viewrow.Controls.ID; //получить идентификатор контрола
}
Получить объект контрола на GridView
У меня на форме есть GridView, в котором для всех колонок настроены шаблоны. Мне необходимо получить объект контрола для шаблона редактирования (EditItemTemplate).
Код:
Код:
В данном коде в строку s возвращаются только идентификаторы контролов, расположенные на шаблоне просмотра (ItemTemplate). Не могу понять, что нужно сделать для получения контролов с других темплэйтов.
Поэксперементировав, я понял, что в приведенном примере в строке s возвращаются контролы из ItemTemplate, потому что при возникновении события Editing у GridView в редактироемой строке почему то всё еще отображается шаблон ItemTemplate (глюкофича аспдотнета?). Например если тот же код повесить на событие Updating, то в s будут нужные мне контролы. Проблемма только в том, что мне нужно изменить определенным образом содержимое EditItemTemplate еще До того как пользователь получит возможность редактировать строку.
Код:
protected void RightsGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((RightsGridView.EditIndex > -1))
{
GridViewRow row = e.Row;
if ((row.RowState & DataControlRowState.Edit)!=0)
{
//получить нужные контролы
Label CollectionLabel = (Label)row.FindControl("CollectionLabel");
DropDownList ReadLevelDropDownList = (DropDownList)row.FindControl("ReadLevelDropDownList");
DropDownList OrderLevelDropDownList = (DropDownList)row.FindControl("OrderLevelDropDownList");
CheckBox PrintRightCheckBox = (CheckBox)row.FindControl("PrintRightCheckBox");
CheckBox DownloadRightCheckBox = (CheckBox)row.FindControl("DownloadRightCheckBox");
RestrictRightsEdit(
ReadLevelDropDownList,
OrderLevelDropDownList,
PrintRightCheckBox,
DownloadRightCheckBox
);
}
}
}
{
if ((RightsGridView.EditIndex > -1))
{
GridViewRow row = e.Row;
if ((row.RowState & DataControlRowState.Edit)!=0)
{
//получить нужные контролы
Label CollectionLabel = (Label)row.FindControl("CollectionLabel");
DropDownList ReadLevelDropDownList = (DropDownList)row.FindControl("ReadLevelDropDownList");
DropDownList OrderLevelDropDownList = (DropDownList)row.FindControl("OrderLevelDropDownList");
CheckBox PrintRightCheckBox = (CheckBox)row.FindControl("PrintRightCheckBox");
CheckBox DownloadRightCheckBox = (CheckBox)row.FindControl("DownloadRightCheckBox");
RestrictRightsEdit(
ReadLevelDropDownList,
OrderLevelDropDownList,
PrintRightCheckBox,
DownloadRightCheckBox
);
}
}
}