C# 在按钮中保存Gridview数据,然后再次加载?

C# 在按钮中保存Gridview数据,然后再次加载?,c#,javascript,asp.net,gridview,grid,C#,Javascript,Asp.net,Gridview,Grid,我想保存一个单一的按钮点击Gridview字段。有可能得到所有的数据吗 我尝试过的事情 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewCellEdit._Default" enableEventValidation="false" %> &

我想保存一个单一的按钮点击Gridview字段。有可能得到所有的数据吗

我尝试过的事情

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="GridViewCellEdit._Default" enableEventValidation="false" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <script type="text/javascript">

        function GetSelectedRow(lnk) {
            debugger;
            var row = lnk.parentNode.parentNode;
            var rowIndex = row.rowIndex - 1;
            alert("row: " + rowIndex);
            return false;
        }
    </script>
    <asp:Panel ID="pnl1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button Save" OnClick="Button1_Click" />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" OnRowDataBound="GridView1_RowDataBound">
        </asp:GridView>
    </asp:Panel>
</asp:Content>

函数GetSelectedRow(lnk){
调试器;
var row=lnk.parentNode.parentNode;
var rowIndex=row.rowIndex-1;
警报(“行:+行索引”);
返回false;
}
所有列都是自动生成的

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

namespace GridViewCellEdit
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            MyEntity entity = new MyEntity();
            List<MyEntity> list = new List<MyEntity>();
            list.Add(new MyEntity() { ID = 1,Name="Name1",Address="It is very long field so no more button in grid1"});
            list.Add(new MyEntity() { ID = 2, Name = "Name2", Address = "It is very long field so no more button in grid2" });
            list.Add(new MyEntity() { ID = 3, Name = "Name3", Address = "It is very long field so no more button in grid3" });
            list.Add(new MyEntity() { ID = 4, Name = "Name4", Address = "It is very long field so no more button in grid4" });
            list.Add(new MyEntity() { ID = 4, Name = "Name5", Address = "It is very long field so no more button in grid5" });
            list.Add(new MyEntity() { ID = 6, Name = "Name6", Address = "It is very long field so no more button in grid6" });
            list.Add(new MyEntity() { ID = 7, Name = "Name7", Address = "It is very long field so no more button in grid7" });
            list.Add(new MyEntity() { ID = 8, Name = "Name8", Address = "It is very long field so no more button in grid8" });
            list.Add(new MyEntity() { ID = 9, Name = "Name9", Address = "It is very long field so no more button in grid9" });
            GridView1.DataSource = list;
            GridView1.DataBind();
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                 e.Row.Attributes.Add("onclick", "this.style.backgroundColor='orange'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='white'");
            e.Row.Cells[2].Width = new Unit("700px");
            TextBox txtAddress = new TextBox();
            txtAddress.ReadOnly = false;
            txtAddress.Style.Add("width", "99%");
            e.Row.Cells[2].Controls.Add(txtAddress);
            e.Row.Cells[2].Style.Add("text-align", "center");
            txtAddress.Text = e.Row.Cells[2].Text;
            txtAddress.Attributes.Add("onblur", "return GetSelectedRow(this); ");
            GridView1.Attributes.Add("style", "table-layout:fixed");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //Setp1 : do some trick to get the address 
            //Step2 : Check if address is changed as only address field is editable
            //Step3 : Update database for all the changed address in a loop
            //Setp4 : reload the grid with updated Data
        }
    }
    public class MyEntity
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
命名空间GridViewCellEdit
{
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
MyEntity实体=新的MyEntity();
列表=新列表();
Add(new MyEntity(){ID=1,Name=“Name1”,Address=“这是一个很长的字段,所以grid1中没有更多的按钮”});
Add(new MyEntity(){ID=2,Name=“Name2”,Address=“这是一个很长的字段,所以grid2中没有更多的按钮”});
Add(new MyEntity(){ID=3,Name=“Name3”,Address=“这是一个很长的字段,所以在grid3中没有更多的按钮”});
Add(new MyEntity(){ID=4,Name=“Name4”,Address=“这是一个很长的字段,所以在grid4中没有更多的按钮”});
Add(new MyEntity(){ID=4,Name=“Name5”,Address=“这是一个很长的字段,所以在grid5中不再有按钮了”});
Add(new MyEntity(){ID=6,Name=“Name6”,Address=“这是一个很长的字段,所以在grid6中不再有按钮了”});
Add(new MyEntity(){ID=7,Name=“Name7”,Address=“这是一个很长的字段,所以在grid7中不再有按钮了”});
Add(new MyEntity(){ID=8,Name=“Name8”,Address=“这是一个很长的字段,所以grid8中不再有按钮了”});
Add(new MyEntity(){ID=9,Name=“Name9”,Address=“这是一个很长的字段,所以grid9中不再有按钮了”});
GridView1.DataSource=列表;
GridView1.DataBind();
}
受保护的void GridView1_RowDataBound(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
e、 添加(“onclick”,“this.style.backgroundColor='orange'”);
e、 添加(“onmouseout”,“this.style.backgroundColor='white'”);
e、 行。单元格[2]。宽度=新单位(“700px”);
TextBox txtAddress=新的TextBox();
txtAddress.ReadOnly=false;
添加(“宽度”,“99%”);
e、 Row.Cells[2]。Controls.Add(txtAddress);
e、 行。单元格[2]。样式。添加(“文本对齐”,“居中”);
txtAddress.Text=e.Row.Cells[2].Text;
Add(“onblur”,“return GetSelectedRow(this);”;
GridView1.Attributes.Add(“样式”,“表格布局:固定”);
}
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
//Setp1:做一些技巧来获取地址
//步骤2:检查地址是否更改,因为只有地址字段是可编辑的
//步骤3:更新循环中所有更改地址的数据库
//Setp4:使用更新的数据重新加载网格
}
}
公共类MyEntity
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串地址{get;set;}
}
}

是否可以从javascript获取地址更改并从主页保存它。

您可以循环行并获取每行的地址字段

foreach (GridViewRow row in GridView1.Rows)
{
    string address = row.Cells[2].Text;
    string name = row.Cells[1].Text;

    //Update your DB here
}

在此处调用LoadData方法

您计划使用哪种方法保存数据?数据集是一种简单的方法。在按钮1\u点击…你能解释一下吗。。