Задача: по специальному полю в данных программно переключать одну из строчек в (DataGrid || DataList || GridView) в режим редактирования.
Попытка решения:
private string _GradeType = String.Empty;
int current_row_i = 0;
int edit_row = -1;
int current_row_i1 = 0;
int edit_row1 = -1;
int current_row_i2 = 0;
int edit_row2 = -1;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string _gradetype;
current_row_i++;
if (e.Row.RowType == DataControlRowType.DataRow)
{
_gradetype = ((DataRowView)e.Row.DataItem)["GT"].ToString();
if (_gradetype == _GradeType)
{
edit_row = current_row_i;
}
}
}
protected void GridView1_PreRender(object sender, EventArgs e)
{
GridView1.EditIndex = edit_row;
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
string _gradetype;
current_row_i1++;
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
_gradetype = ((DataRowView)e.Item.DataItem)["GT"].ToString();
if (_gradetype == _GradeType)
{
edit_row1 = current_row_i1;
DataList1.EditItemIndex = current_row_i1;
}
}
}
protected void DataList1_PreRender(object sender, EventArgs e)
{
DataList1.EditItemIndex = edit_row1;
}
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
string _gradetype;
current_row_i2++;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
_gradetype = ((DataRowView)e.Item.DataItem)["GT"].ToString();
if (_gradetype == _GradeType)
{
edit_row2 = current_row_i2;
DataGrid1.EditItemIndex = current_row_i2;
}
}
}
protected void DataGrid1_PreRender(object sender, EventArgs e)
{
DataGrid1.EditItemIndex = edit_row2;
}
===============
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" ShowHeader="False" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound" OnPreRender="GridView1_PreRender">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%#Eval("GradeType") %>
</ItemTemplate>
<EditItemTemplate>
afdsasdfsd
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<%#Eval("GradeValue") %>
</ItemTemplate>
<EditItemTemplate>
<uc2:DropDownGradeValues ID="DropDownGradeValues1" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" OnItemDataBound="DataList1_ItemDataBound" OnPreRender="DataList1_PreRender">
<ItemTemplate>
<%#Eval("GradeType") %>
<%#Eval("GradeValue") %>
</ItemTemplate>
<EditItemTemplate>
<uc2:DropDownGradeValues ID="DropDownGradeValues1" runat="server" />
12321312321321321321321321
</EditItemTemplate>
</asp:DataList>
<asp:DataGrid ID="DataGrid1" runat="server" DataSourceID="SqlDataSource1" ShowHeader="False" OnItemDataBound="DataGrid1_ItemDataBound" OnPreRender="DataGrid1_PreRender">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<%#Eval("GradeType") %>
</ItemTemplate>
<EditItemTemplate>
adfsfdsfsfsdfds
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<%#Eval("GradeValue") %>
</ItemTemplate>
<EditItemTemplate>
<uc2:DropDownGradeValues ID="DropDownGradeValues1" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Условие (_gradetype == _GradeType) срабатывает (проверял отладчиком).
Шаблон редактирования не отображается ни в одном из контролов.
Как быть?