使用viewstate进行分页时,使用gridview中的数据和其他控件保持数据 [英] maintaining data in textboxes and othe controlls in gridview while paging using viewstate

查看:56
本文介绍了使用viewstate进行分页时,使用gridview中的数据和其他控件保持数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我有一个带编辑按钮和分页功能的gridview,点击编辑后,gridview特定行中的所有控件都变得可编辑。



现在我的问题是如果用户点击编辑并更改网格上的控件中的数据并转到下一页,更改数据并再次返回到第一页,数据不在第一页或第二页上维护。



任何人都可以告诉我如何在分页时使用viewstate维护编辑过的数据。

下面是代码:

Gridview.aspx:

Hi ,

I have a gridview with edit button and paging enabled , after clicking on edit all the controlls in specific row of gridview becomes editable .

now my problem is if user clicks on edit and changes data in sme controlls on grid and go to next page , changes data thr and again come back to first page , the data is not maintained on first page or on 2nd page .

can anyone pls tell me how to maintain the edited data using viewstate while paging .
Heres the code :
Gridview.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
     <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

        Height="367px"   EnableViewState="true"

        onrowcancelingedit="GridView1_RowCancelingEdit"

        onrowdeleting="GridView1_RowDeleting"

        onrowediting="GridView1_RowEditing"

        onrowupdating="GridView1_RowUpdating"

        Width="535px" AllowPaging="True" AllowSorting="True"

        onpageindexchanging="GridView1_PageIndexChanging" PageSize="4"

        onsorting="GridView1_Sorting" onrowcommand="GridView1_RowCommand">
        <Columns>
            <asp:CommandField ButtonType="Button" ShowDeleteButton="True"

                ShowEditButton="True" ShowSelectButton="True" />
                 <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" />
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:BoundField DataField="SalCode" HeaderText="SalCode" />

                </Columns>
                </asp:GridView>

                 <asp:Label ID="lbl_Error" runat="server"></asp:Label>
                </form>
</body>
</html>



和gridview.aspx.cs:


and gridview.aspx.cs:

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


public partial class _2ndGridView : System.Web.UI.Page
{
    SqlConnection cn;
    SqlCommand cmd;
    SqlDataAdapter da;
    DataSet Ds;

    protected void Page_Load(object sender, EventArgs e)
    {
        cn = new SqlConnection("Data Source=INDPI2TC12;initial catalog=CEP;Persist Security Info=True;User ID=cepuser;Password=Atos123");
        da = new SqlDataAdapter("Select * from GridTrial", cn);
        Ds = new DataSet();
        if (!IsPostBack)
        {
            Ds = GetDs();
            BindGrid(Ds);
        }
    }

    private DataSet GetDs()
    {
        
        da.Fill(Ds, "grid");
        return Ds;
    }

    private void BindGrid(DataSet ds)
    {
        GridView1.DataSource = ds.Tables["grid"];
        GridView1.DataBind();
    }

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

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int id, SalCode;
        string Name;

        //retrieve the data from gridview
        id= Convert.ToInt32((GridView1.Rows[e.RowIndex].Cells[1].Text));
       Name = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text;
        SalCode = Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text);
       
        try
        {
            cmd = new SqlCommand();
            cmd.Connection = cn;
            cmd.CommandText = "update GridTrial set Name=@NAME,SalCode=@SalCode where id=@ID";
            cmd.Parameters.Add("@ID", id);
            cmd.Parameters.Add("@Name", Name);
            cmd.Parameters.Add("@SalCode", SalCode);
            cn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            lbl_Error.Text = ex.Message;
        }
        finally
        {
            cn.Close();
        }
        GridView1.EditIndex = -1;
        Ds = GetDs();
        BindGrid(Ds);
    }


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

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id;
       id = Convert.ToInt32((GridView1.Rows[e.RowIndex].Cells[1].Text));
        try
        {
            cmd = new SqlCommand();
            cmd.Connection = cn;
            cmd.CommandText = "delete from GridTrial where id=@ID";
            cmd.Parameters.Add("@ID", id);
            cn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            lbl_Error.Text = ex.Message;
        }
        finally
        {
            cn.Close();
        }
        GridView1.EditIndex = -1;
        Ds = GetDs();
        BindGrid(Ds);
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        Ds = GetDs();
        BindGrid(Ds);
    }


    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        lbl_Error.Text = GridView1.SortExpression.ToString();
        //        = SortDirection.Ascending;
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
       
    }
}

推荐答案

这可以帮助你设置viewstate

http://msdn.microsoft.com /en-us/library/ms227551(v=vs.85).aspx [ ^ ]
may this help you to set viewstate
http://msdn.microsoft.com/en-us/library/ms227551(v=vs.85).aspx[^]


查看此链接



http://forums.asp.net/t/1109752.aspx [ ^ ]


这篇关于使用viewstate进行分页时,使用gridview中的数据和其他控件保持数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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