在按键输入的ASP.NET gridview中编辑模式。 [英] Edit mode in ASP.NET gridview on keypress enter.

查看:60
本文介绍了在按键输入的ASP.NET gridview中编辑模式。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在gridview的editmode中按行Enter键时,它必须保存,它必须转到下一行,并且该行必须显示在editmode中。更新数据更容易。请帮助我



我尝试过:



protected void gv_RowEditing(object sender,GridViewEditEventArgs e)

{



int rowNum = e.NewEditIndex;

GridViewRow row = gv.Rows [Convert.ToInt32 (e.CommandArgument)];

gv.EditIndex = Convert.ToInt32(row);

DataTable dt =(DataTable)Session [dt];

gv.DataSource = dt;

gv.DataBind();

}

When i press Enter Key on row which is in editmode in gridview it has to save and it has to go to next row and that row has to display in editmode.To update the data easier.Please help me

What I have tried:

protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{

int rowNum = e.NewEditIndex;
GridViewRow row = gv.Rows[Convert.ToInt32(e.CommandArgument)];
gv.EditIndex = Convert.ToInt32(row);
DataTable dt = (DataTable)Session["dt"];
gv.DataSource = dt;
gv.DataBind();
}

推荐答案

这是一个仅使用代码并且没有JavaScript的解决方案:



1.要实现这一点,请使用form.defaultbutton属性。

2.确保在设置了Id属性的TemplateFields中手动定义编辑控件.eg文本框。

3.确保编辑,更新按钮也是在设置了ID的TemplateFields中手动定义的,这是输入按钮允许你更新的方式,然后继续下一行。

4. SetFocus() - 定制这个到您自己的要求,以帮助用户体验。



加价:

Here's a solution using only code begind and no JavaScript:

1. To achieve this, make use of the form.defaultbutton property.
2. Ensure that edit controls .e.g text boxes are manually defined in TemplateFields with Id property set.
3. Ensure the Edit, Update buttons are also defined manually inside TemplateFields with Ids set, this is how the enter button will allow you to update, and move on to next row.
4. SetFocus() - tailor this to your own requirement to aid user experience.

Markup:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EnterKeyEditGrid.aspx.cs" Inherits="WebFormsGridViewCommand.EnterKeyEditGrid" %>

<!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 runat="server" ID="gv1"
                AutoGenerateColumns="false"
                OnRowEditing="gv1_RowEditing"
                OnRowCancelingEdit="gv1_RowCancelingEdit"
                OnRowUpdating="gv1_RowUpdating">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <%#Eval("Item") %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" ID="ItemTextBox" Text='<%#Eval("Item") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField HeaderText="Price" DataField="Price" DataFormatString="{0:c}" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button runat="server" ID="editButton" Text="Edit" CommandName="edit" />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:Button runat="server" ID="updateButton" Text="Update" CommandName="update" ClientIDMode="AutoID" />
                            <asp:Button runat="server" ID="cancelButton" Text="Cancel" CommandName="cancel" />
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>





代码:



Code:

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

namespace WebFormsGridViewCommand
{
    public partial class EnterKeyEditGrid : System.Web.UI.Page
    {
        private const string SESSION_GV_DATA = "Data";
        private DataTable _Data
        {
            get
            {
                if (Session[SESSION_GV_DATA] == null)
                {
                    Session[SESSION_GV_DATA] = GetData();
                }
                return (DataTable)Session[SESSION_GV_DATA];
            }
            set { Session[SESSION_GV_DATA] = value; }
        }

        public void SetUpdateButtonId()
        {
            if (gv1.EditIndex != -1)
            {
                Button updateButton = (Button)gv1.Rows[gv1.EditIndex].FindControl("UpdateButton");
                if (updateButton != null)
                {
                    Form.DefaultButton = updateButton.UniqueID;
                }
            }
            else
            {
                Form.DefaultButton = null;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                LoadGridView();
            }
        }

        protected void LoadGridView()
        {
            _Data = GetData();

            gv1.DataSource = _Data;
            gv1.DataBind();
        }

        private DataTable GetData()
        {
            DataTable dt = new DataTable("data1");
            dt.Columns.AddRange(
                new DataColumn[]
                {
                    new DataColumn("Item",typeof(string)),
                    new DataColumn("Price", typeof(decimal))
                });
            List<object[]> dataItems = new List<object[]>
            {
                new object[] { "Apple", 0.30m },
                new object[] { "Orange", 0.20m },
                new object[] { "Pear", 0.40m }
            };

            dataItems.ForEach(x => dt.Rows.Add(x));

            return dt;
        }

        protected void gv1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gv1.EditIndex = e.NewEditIndex;
            LoadGridView();
            SetFocus();
        }

        protected void gv1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gv1.EditIndex = -1;
            LoadGridView();
        }

        protected void gv1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            // Implement your data update code here...

            SetEditRow();
            LoadGridView();
            SetUpdateButtonId();
            SetFocus();
        }

        private void SetEditRow()
        {
            if (gv1.EditIndex == -1) return;

            if (gv1.EditIndex + 1 < gv1.Rows.Count)
            {
                if (gv1.Rows[gv1.EditIndex + 1].RowType == DataControlRowType.DataRow)
                {
                    gv1.EditIndex++;
                }
            }
            else
            {
                gv1.EditIndex = -1;
            }
        }

        private void SetFocus()
        {
            if (gv1.EditIndex == -1) return;
            gv1.Rows[gv1.EditIndex].Cells[0].FindControl("ItemTextBox").Focus();
        }
    }
}


这篇关于在按键输入的ASP.NET gridview中编辑模式。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆