c# - 查询有关asp.net中gridview控件中的自动编辑按钮
问题描述
我在我的 asp.net 项目中使用了 gridview 控件的自动编辑按钮。我在单击编辑按钮时遇到问题,它会触发 gridview 的 rowcommand 事件和 rowediting 事件,但是当我再次单击编辑按钮时,网格行未进入编辑模式,现在网格行进入编辑模式问题是为什么我需要单击编辑按钮两个次。
这是我的 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;
}
}
}
解决方案
添加.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();
}
推荐阅读
- java - 我没有在 REST api 中获得嵌套资源的不同 ID
- javascript - 执行删除操作后如何自动刷新页面
- image - 将未压缩的 TIF 文件转换为具有压缩 LZW 和 ZIP 的 TIF 文件
- python - 如何从 github 安装 deepplantphenomics python 包?
- java - E/RecyclerView:没有附加适配器;跳过布局 Android Studio RecyclerView
- python - boto3 AWS Batch在`.describe_jobs()`响应中缺少`logStreamName`
- java - GUI 问题 Java Netbeans 将 TextFields 与数字相关联
- python - 如何计算对比度改善指数 (CII)
- android - Playstore:停用此 APK 将导致您的应用可用于在更少类型的设备上进行新安装
- macos - 错误:没有名称为“chromedriver”的可用公式