Запрос относительно кнопки автоматического редактирования в элементе управления gridview в asp.net - PullRequest
0 голосов
/ 30 апреля 2019

Я использую кнопку автоматического редактирования элемента управления gridview в моем проекте asp.net. Я сталкиваюсь с проблемой, когда я нажимаю кнопку редактирования, она запускает событие rowcommand и rowediting события gridview, но строка сетки не переходит в режим редактирования, когда я снова нажимаю кнопку редактирования, теперь строка сетки переходит в режим редактирования. Проблема в том, что мне нужно нажать кнопку edit два раз.

Вот мой HTML-код (aspx).

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="LMS.test" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" AutoGenerateEditButton="True">
           <Columns>                       
              <asp:BoundField HeaderText="Employee Number" DataField="empno" ReadOnly="True">
                  <ItemStyle Width="100px" />
              </asp:BoundField>
              <asp:TemplateField HeaderText="Employee Name">                         
              </asp:TemplateField>
           </Columns>
         <HeaderStyle CssClass="gridheader" />
        </asp:GridView>

        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
     </div>
    </form>
</body>
</html>

C # код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Xml.Linq;
using System.Xml;

namespace LMS
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[1] {new DataColumn("empno", typeof(int))});
            for (int i = 0; i < 10; i++)
            {
                DataRow dr;
                dr = dt.NewRow();
                dr["empno"] = i.ToString("00");

                dt.Rows.Add(dr);

                GridView1.DataSource = dt;
                GridView1.DataBind();
            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridView1.EditIndex = -1;
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {

        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
        }
    }
}

1 Ответ

0 голосов
/ 30 апреля 2019

Добавить .DataBind в GridView1_RowEditing:

protected void Page_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[1] { new DataColumn("empno", typeof(int)) });
    for (int i = 0; i < 10; i++)
    {
        DataRow dr;
        dr = dt.NewRow();
        dr["empno"] = i.ToString("00");

        dt.Rows.Add(dr);

        GridView1.DataSource = dt;
        Session["dt"] = dt;
        GridView1.DataBind();
    }
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    GridView1.DataSource = Session["dt"] as DataTable;
    GridView1.DataBind();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...