GridView вызвало событие RowEditing, которое не было обработано при поиске определенной строки - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть вид сетки с 2 столбцами, один для текстового поля, а другой для значка редактирования.Если я нажму на иконку редактирования, откроется текстовое поле для редактирования, а во втором столбце будет иконка обновления и иконка отмены.Также над окном сетки находится текстовое поле поиска, позволяющее пользователю выполнять поиск нужной строки.

Первый сценарий: когда у меня есть, например, 5 строк, и щелкните значок редактирования в любой строке, этооткроет окно редактирования, и я смогу редактировать.

Второй сценарий: когда я наберу текст в поле поиска и нажму на кнопку поиска, он найдет соответствующую строку и отобразит ее в виде сеткив одиночестве.

Проблема в Когда я нажимаю на иконку редактирования для этой строки (результат поиска), она показывает: Событие GowView, вызванное RowEditing, которое не было обработано

Это мой обзор:

<asp:GridView ID="PSGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="StatusID" DataSourceID="PSSqlDataSource" ShowFooter="True" BorderStyle="None" BorderWidth="1px" Width="100%" ShowHeaderWhenEmpty="True" EmptyDataText="No protocal status."
  AllowPaging="true" PageSize="10" CssClass="table table-bordered table-striped table-condensed mb-none" AllowSorting="True" OnRowCommand="PSGridView_RowCommand">
  <Columns>
    <%--RP col--%>
      <asp:TemplateField HeaderText="Protocol Status" HeaderStyle-CssClass="caption font-green" HeaderStyle-Width="90%">
        <EditItemTemplate>
          <asp:TextBox ID="PSBind" runat="server" Text='<%# Bind("Des") %>' Width="100%" CssClass="form-control"></asp:TextBox>
        </EditItemTemplate>
        <ItemTemplate>
          <asp:Label ID="PSLabel" runat="server" Text='<%# Bind("Des") %>' Width="100%"></asp:Label>
        </ItemTemplate>
        <FooterTemplate>
          <asp:TextBox ID="PS" runat="server" Width="100%" CssClass="form-control"></asp:TextBox>
        </FooterTemplate>
      </asp:TemplateField>
      <%--Action col--%>

        <asp:TemplateField HeaderText="Actions" HeaderStyle-CssClass="caption font-green" HeaderStyle-Width="10%">
          <ItemTemplate>
            <asp:LinkButton ID="btnEdit" runat="server" CommandName="Edit" Text="Edit" ToolTip="Edit">
              <i class="fa fa-lg fa-pencil"></i></asp:LinkButton>&nbsp;&nbsp;&nbsp;
            <%--<asp:LinkButton ID="btnDelete" runat="server"  CausesValidation="false"  CommandArgument="<%# Container.DataItemIndex %>" CommandName="DeletePS" OnClientClick="return FinalDeleteConfirm(this, event);" Text="Delete" ToolTip="Delete">--%>
              <asp:LinkButton ID="btnDelete" runat="server" CausesValidation="false" CommandArgument="<%# Container.DataItemIndex %>" CommandName="DeletePS" OnClientClick="DeleteConfirm()" Text="Delete" ToolTip="Delete">
                <i class="fa fa-lg fa-trash-o" style="color:red;"></i></asp:LinkButton>
          </ItemTemplate>

          <EditItemTemplate>
            <asp:LinkButton ID="btnUpdate" runat="server" CommandName="UpdatePS" CommandArgument="<%# Container.DataItemIndex %>" Text="Update" ToolTip="Confirm">
              <i class="fa fa-lg fa-check" style="color:green"></i></asp:LinkButton>&nbsp;&nbsp;&nbsp;
            <asp:LinkButton ID="btnCancel" runat="server" CommandName="Cancel" Text="Cancel" ToolTip="Cancel">
              <i class="fa fa-lg fa-times" style="color:red"></i></asp:LinkButton>
          </EditItemTemplate>

          <FooterTemplate>
            <button id="btnAdd" class="btn btn-primary btn-circle" type="button" runat="server" onserverclick="btnAdd_Click">
            <i class="fa fa-plus"></i>
            &nbsp;Add Protocol Status   
            </button>
          </FooterTemplate>
        </asp:TemplateField>
  </Columns>

  <PagerStyle CssClass="pagination-marwa" />
  <SortedAscendingCellStyle BackColor="#FFFDE7" />
  <SortedAscendingHeaderStyle BackColor="#FFF9C4" />
  <SortedDescendingCellStyle BackColor="#FFFDE7" />
  <SortedDescendingHeaderStyle BackColor="#FFF9C4" />
</asp:GridView>

<asp:SqlDataSource ID="PSSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ProtocolConnectionString %>" SelectCommand="ProtocolStatus_Select" DeleteCommand="ProtocolStatus_Delete" InsertCommand="ProtocolStatus_Insert" UpdateCommand="ProtocolStatus_Update"
  DeleteCommandType="StoredProcedure" InsertCommandType="StoredProcedure" SelectCommandType="StoredProcedure" UpdateCommandType="StoredProcedure">

  <DeleteParameters>
    <asp:Parameter Name="StatusID" Type="Int32" />
  </DeleteParameters>

  <InsertParameters>
    <asp:Parameter Name="Des" Type="String" />
  </InsertParameters>

  <UpdateParameters>
    <asp:Parameter Name="StatusID" Type="Int32" />
    <asp:Parameter Name="Des" Type="String" />
  </UpdateParameters>

</asp:SqlDataSource>

код за c #:

protected void PSGridView_RowCommand(object sender, GridViewCommandEventArgs e) {
        var exist = 0;            
        if (e.CommandName == "DeletePS" )
        {
            some code
        }

        else if (e.CommandName == "UpdatePS")
        {
            var exist1 = 0;    
            //When update, check if the new name is already exist in the database
            //*******************************************************************
            var index = Convert.ToInt32(e.CommandArgument);

            if (index >= 10)
            {
                index = index % 10;
            }

            var pageSize = PSGridView.PageSize;
            GridViewRow row = PSGridView.Rows[index % pageSize];
            TextBox txt = row.FindControl("PSBind") as TextBox;
            string t = txt.Text;
            exist1 = check_exist(t);

            if (exist1 == 1)
            {
              errorboxactions.Attributes.Add("style", "display:block");
              errormsgactions.InnerHtml = "This name already exist ! type another name";
            }
            //if not exist
            //*************
            else
            {
               PSGridView.UpdateRow(index, true);
               PSGridView.DataBind();

               updateboxactions.Attributes.Add("style", "display:block");
               updatemsgactions.InnerHtml = "Protocol Status has been updated successfully";
            }                
        } 
    }

1 Ответ

0 голосов
/ 19 декабря 2018

просто сделайте одну простую вещь, запустите событие RowEditing для gridview .... Выполните шаги

select gridview
go to properties
select events and then double click on row editing and then run the page again.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...