RmcbainTheThird Ответов: 1

Как сделать, изменить, чтобы работать должным образом в GridView


Кто избавит меня от этого неприятного вложенного Gridview...



У меня два вопроса вложенный GridView в
1. Я должен нажать два раза на ссылку Изменить, чтобы получить его на огонь
2. когда он срабатывает, поля редактирования остаются пустыми, а не содержат редактируемый текст
действия удалить и добавить работают без проблем

Вот код aspx для вложенной таблицы:
<%-- This grid holds all the child elements --%>
<asp:TemplateField>
  <ItemTemplate>
... <tr>
......<td colspan="100%">
...... <div id="div<%# Eval("BulletGroupID") %>" class="gv-bulletItems" >
.........  
.........  <asp:GridView ID="gvBulletItems" runat="server"
............ AllowPaging="True" AllowSorting="true" BackColor="White" Width="100%" Font-Size="X-Small"
............ AutoGenerateColumns="false" Font-Names="Verdana" DataKeyNames="BulletGroupID" ShowFooter="true"
............ BorderStyle="Double" BorderColor="#0083C1"
............ OnPageIndexChanging="gvBulletItems_OnPageIndexChanging" 
............ OnRowUpdating="gvBulletItems_OnRowUpdating"
............ OnRowCommand="gvBulletItems_OnRowCommand" 
............ OnRowEditing="gvBulletItems_OnRowEditing"
............ OnRowCancelingEdit="gvBulletItems_OnRowCancelingEdit"
............ OnRowDataBound="gvBulletItems_OnRowDataBound" 
............ OnRowDeleting="gvBulletItems_OnRowDeleting">
............ 
............ <RowStyle BackColor="LightCyan" />
............ <AlternatingRowStyle BackColor="White" />
............ <HeaderStyle BackColor="#0083C1" ForeColor="White" />
............ <FooterStyle BackColor="PaleTurquoise" />
............ <Columns>
...............<asp:TemplateField HeaderText="BulletGroup ID" Visible="False" SortExpression="BulletGroupID">
...............   <ItemTemplate>
..................  <asp:Label ID="lblBulletGroupID" Text='<%# Eval("BulletGroupID") %>' Visible="False" runat="server"></asp:Label>
...............   </ItemTemplate>

...............</asp:TemplateField>
...............<asp:TemplateField HeaderText="BulletGroup ID" Visible="False" SortExpression="BulletID">
...............   <ItemTemplate>
..................  <asp:Label ID="lblBulletID" Text='<%# Eval("BulletID") %>' Visible="False" runat="server"></asp:Label>
...............   </ItemTemplate>

...............</asp:TemplateField>
...............<asp:TemplateField HeaderText="List Order" SortExpression="ListOrder">
...............   <ItemTemplate><%# Eval("ListOrder")%>  </ItemTemplate>
...............   <EditItemTemplate>
..................  <asp:TextBox ID="txtBiListOrder" Text='<%# Eval("ListOrder")%>' runat="server"></asp:TextBox>
...............   </EditItemTemplate>
...............   <FooterTemplate>
..................  <asp:TextBox ID="txtBiListOrder" Text="" runat="server"></asp:TextBox>
...............   </FooterTemplate>
...............</asp:TemplateField>

...............<asp:TemplateField HeaderText="Bullet Text" SortExpression="DisplayText">
...............   <ItemTemplate><%# Eval("DisplayText")%></ItemTemplate>
...............   <EditItemTemplate>
..................  <asp:TextBox ID="txtBiDisplayText" Text='<%# Eval("DisplayText")%>'  runat="server"></asp:TextBox>
...............   </EditItemTemplate>
...............   <FooterTemplate>
..................  <asp:TextBox ID="txtBiDisplayText" Text="" runat="server"></asp:TextBox>
...............   </FooterTemplate>
...............</asp:TemplateField>
...............<asp:CommandField HeaderText="Edit" ShowEditButton="True" />
...............<asp:CommandField HeaderText="Delete" ShowDeleteButton="True"/>
...............<asp:TemplateField >
...............   <FooterTemplate>
..................  <asp:LinkButton ID="linkAddBulletItem" CommandName="AddBulletItem" runat="server">Add</asp:LinkButton>
...............   </FooterTemplate>
...............</asp:TemplateField>
............ </Columns>
.........  </asp:GridView>
...... </div>
......</td>
... </tr>
  </ItemTemplate>
</asp:TemplateField>


К вашему сведению Родительский gridview не имеет ни одной из этих проблем

Что я уже пробовал:

Шагая по коду, бок о бок сравниваем Родительский gridview

[no name]

Проверьте наличие обратной передачи в родительской сетке и убедитесь, что данные привязаны к вложенному элементу управления сеткой при срабатывании события click. Кажется вложенная сетка очищается при обратной передаче

1 Ответов

Рейтинг:
10

Vincent Maverick Durano

Цитата:
1. Я должен нажать два раза на ссылку Изменить, чтобы получить его на огонь


Если вы связываете свои GridView около Page_Load событие, а затем обязательно оберните свой код для привязки внутри !IsPostback блок:
protected void Page_Load(object sender, EventArgs e)
{
        if (!Page.IsPostBack)
        {
            //Your code for binding your GridView here
        }
}


Цитата:
2. когда он срабатывает, поля редактирования остаются пустыми, а не содержат редактируемый текст
действия удалить и добавить работают без проблем


Убедитесь, что вы повторно заселяете свой GridView около RowEditing сразу после того, как вы установите NewEditIndex. Например:
protected void GridViewEmployee_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridViewEmployee.EditIndex = e.NewEditIndex; // turn to edit mode
    // Rebind your GridView with the datasource here to show the data in edit mode

}


RmcbainTheThird

Ну, повторная привязка работает, но я никогда не мог получить значение, которое позволило бы мне идентифицировать тот gridview, в котором я редактировал, и повторно привязать его. В итоге мне пришлось заново привязать все вложенные gridviews. Я собираюсь воткнуть в него вилку и назвать это сделанным