Как получить содержимое ячейки в ASP.NET GridView при обработке OnRowEditing? - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть GridView со столбцом BoundField и довольно много шаблонов элементов, таких как:

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" OnRowCommand="gvUsers_RowCommand" 
OnRowDataBound="gvUsers_RowDataBound" DataKeyNames="UserId" OnRowEditing="gvUsers_OnRowEditing" 
OnRowUpdating="gvUsers_OnRowUpdating" OnRowUpdated="gvUsers_OnRowUpdated"
     DataSourceID="DataSource1" Width="807px" Height="105px" 
    AllowPaging="True" >
<Columns>
    <asp:BoundField DataField="UserName" HeaderText="User Name" 
        SortExpression="UserName" />
    <asp:TemplateField HeaderText="Approver">
        <ItemTemplate>
            <asp:CheckBox ID="cbApprover" runat="server" Enabled="false" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Auditor">
        <ItemTemplate>
            <asp:CheckBox ID="cbAuditor" runat="server" Enabled="false" />
        </ItemTemplate>
    </asp:TemplateField>
     <asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="btnEdit" runat="server" 
                CommandArgument='<%# Eval("UserName") %>' CommandName="Edit" Text="Edit" />
            <asp:Label ID="lblPipe1" runat="server" Text=" | " />
            <asp:LinkButton ID="btnUpdate" runat="server" 
                CommandArgument='<%# Eval("UserName") %>' CommandName="Update" Text="Update" />
            <asp:Label ID="lblPipe" runat="server" Text=" | " />
            <asp:LinkButton ID="btnDelete" runat="server" 
                CommandArgument='<%# Eval("UserName") %>' CommandName="Remove" 
                OnClientClick="return confirm('Are you sure you want to delete this user?');" 
                Text="Delete" />
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

При работе с кнопкой «Изменить ссылку» мне нужно использовать значение в BoundField, UserName. К сожалению, во время обработчика OnRowEditing все строки пусты "". Это также верно для последующего обработчика OnRowDataBound для рассматриваемой строки, где e.Row.RowState == DataControlRowState.Edit. Есть ли способ получить это значение после того, как пользователь щелкнет ссылку «Изменить» и начнет событие OnRowEditing?

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Я пришел к решению, которое было немного сложнее, чем я надеялся.Я покажу код позже, но я сделал следующее:

  1. Создал HiddenField для хранения значения
    ячейки, которую я хотел редактировать, в состоянии просмотра.
  2. Inв обработчике OnRowDataBound я присвоил значение
    HiddenField.
  3. ItemTemplate, как видно выше, отправляет имя пользователя в качестве аргумента.Я храню это значение в HiddenField.
  4. OnRowEditing запускается после обработчика команд.Вот где я читаю HiddenField.

Если у кого-то есть более простое решение, я бы с удовольствием об этом узнал.

0 голосов
/ 19 ноября 2010

Может быть, вы используете позднее связывание в TemplatedItems без EditItemTemplates?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...