Gridview分页不允许访问网格中的所有行. [英] Gridview Paging not allow to access all rows in grid.

查看:57
本文介绍了Gridview分页不允许访问网格中的所有行.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码...

My Code...

Static datatable data;
protected void Page_Load(object sender, EventArgs e)
   {
       
       if (!IsPostBack)
       {
           data = new DataTable();
           CalculatePURID();
           loadgrid();
       }

   }

public DataTable Fill()
    {
        DataTable dt = new DataTable("items");
        dt.Columns.Add("sno", typeof(int));
        dt.Columns.Add("Prod_id", typeof(string));
        dt.Columns.Add("Prod_name", typeof(string));
        dt.Columns.Add("Prod_size", typeof(string));
        dt.Columns.Add("Prod_qty", typeof(string));
        dt.Columns.Add("Prod_Per_amt", typeof(string));
        dt.Columns.Add("Prod_amt", typeof(string));

        foreach (GridViewRow grdRow in Grid_Purchase.Rows)        
        {
            int i = grdRow.RowIndex;
            DataRow dr = dt.NewRow();
            System.Web.UI.WebControls.Label txt_sno = (System.Web.UI.WebControls.Label)(Grid_Purchase.Rows[i].FindControl("lblsno"));
            System.Web.UI.WebControls.TextBox txt_Prodid = (System.Web.UI.WebControls.TextBox)(Grid_Purchase.Rows[i].FindControl("txt_grd_Pid"));
            System.Web.UI.WebControls.DropDownList txt_Prodname = (System.Web.UI.WebControls.DropDownList)(Grid_Purchase.Rows[i].FindControl("txt_grd_ProdName"));
            System.Web.UI.WebControls.TextBox txt_Prodsize = (System.Web.UI.WebControls.TextBox)(Grid_Purchase.Rows[i].FindControl("txt_grd_size"));
            System.Web.UI.WebControls.TextBox txt_Prodqty = (System.Web.UI.WebControls.TextBox)(Grid_Purchase.Rows[i].FindControl("txt_grd_qty"));
            System.Web.UI.WebControls.TextBox txt_Prodperamt = (System.Web.UI.WebControls.TextBox)(Grid_Purchase.Rows[i].FindControl("txt_grd_piece_amt"));
            System.Web.UI.WebControls.TextBox txt_Prodamt = (System.Web.UI.WebControls.TextBox)(Grid_Purchase.Rows[i].FindControl("txt_grd_amt"));

            dr[0] = txt_sno.Text.ToString();
            dr[1] = txt_Prodid.Text.ToString();
            dr[2] = txt_Prodname.Text.ToString();
            dr[3] = txt_Prodsize.Text.ToString();
            dr[4] = txt_Prodqty.Text.ToString();
            dr[5] = txt_Prodperamt.Text.ToString();
            dr[6] = txt_Prodamt.Text.ToString();
            dt.Rows.Add(dr);
        }
       
        return dt;
    }


public DataTable FillNewrow()
    {
        
        int a = totalnumberofrowsin_Grid;
        data = Fill();      //To get previous values       
        
        DataRow dr1 = data.NewRow();
        dr1[0] = a+1;
        dr1[1] = "";
        dr1[2] = "";
        dr1[3] = "";
        dr1[4] = "";
        dr1[5] = "";
        dr1[6] = "";
        data.Rows.InsertAt(dr1, a + 1);        
        
        //ds.Tables.Add(data);
        
        totalnumberofrowsin_Grid++;
        return data;
    }
    


protected void Grid_Purchase_PageIndexChanging(object sender, GridViewPageEventArgs e)
   {
       Grid_Purchase.PageIndex = e.NewPageIndex;
       Grid_Purchase.DataSource = data;   <b>// Even i used static datatable containing datas(I saw the data using breakpoint).</b>
       Grid_Purchase.DataBind();
   }


protected void Lnk_insert_Click(object sender, EventArgs e)   //link button inside footer of grid
    {
        DataTable dt = new DataTable();
        dt = FillNewrow();
        
        Grid_Purchase.DataSource = dt;
        Grid_Purchase.DataBind();
        DataTable myDatatable1 = new DataTable();
        myDatatable1 = SQLobj.SQL_Adapter("select Prod_name from ProductDetails");
        DropDownList drdList;
        DataRow dr2;
        dr2 = myDatatable1.NewRow();
        dr2["Prod_name"] = "-Select-";
        myDatatable1.Rows.InsertAt(dr2, 0);
        foreach (GridViewRow grdRow in Grid_Purchase.Rows)
        {
            drdList = (DropDownList)(Grid_Purchase.Rows[grdRow.RowIndex].Cells[1].FindControl("txt_grd_ProdName"));
            drdList.DataSource = myDatatable1;
            drdList.DataTextField = "Prod_name";
            drdList.DataBind();
        }
    }


protected void Grid_Purchase_RowCommand(object sender, GridViewCommandEventArgs e) //i just fired it for paging
    {

    }

推荐答案

事情不是那么简单!
这里有一个提示向您显示如何操作:
It''s not quite that simple!
There is a tip which shows you how to do it here: Showing a page of information at a time in a GridView[^]


这是不可能的.如果必须执行此操作,请先检索数据并将其置于视图状态,然后再绑定gridview.
并遍历视图状态数据.
因为gridview数据源仅包含页面所需的数据.当您单击下一个回发occoure时,它将选择下一个记录.
因此,请尝试使用视图状态数据来做到这一点.
It s not possible . If you have to do this first retrive data and put it on view state before bind the gridview.
and loop through the view state data.
because gridview datasource contain only the page require data. when you click next one post back occoure and it select next records.
so try to do this with using view state data.


该问题的解决方案,


我只是维护一个STATIC数据表,以将网格的每个条目更新为该表.


稍后,我从该STATIC数据表中检索那些网格值.效果很好.

谢谢您的支持!!!
Got Solution for this problem,


I just maintain an STATIC datatable to update each entry of my grid into this.


Later i retrieve those grid values from that STATIC datatable. Its works fine.

Thanks for your Support guys !!


这篇关于Gridview分页不允许访问网格中的所有行.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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