如何在按钮上预览gridview [英] How to foreach gridview on button

查看:53
本文介绍了如何在按钮上预览gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

DataTable dt = new DataTable();
            DataColumn cl = new DataColumn("From");
            dt.Columns.Add(cl);
            cl = new DataColumn("To");
            dt.Columns.Add(cl);

            DataColumn cl1 = new DataColumn("Area");
            dt.Columns.Add(cl1);
            cl1 = new DataColumn("Sector");
            dt.Columns.Add(cl1);

            DataColumn cl2 = new DataColumn("CompanyName");
            dt.Columns.Add(cl2);
            cl2 = new DataColumn("Description");
            dt.Columns.Add(cl2);


                DataRow dr = dt.NewRow();
                dr[0] = TextBoxFrom.Text;
                dr[1] = TextBoxTo.Text;
                dr[2] = TextBoxArea.Text;
                dr[3] = TextBoxSector.Text;
                dr[4] = TextBoxCompanyName.Text;
                dr[5] = TextBoxDescription.Text;
                dt.Rows.Add(dr);

            GridViewAllAssigments.DataSource = dt;
            GridViewAllAssigments.DataBind();





我是否有可能以某种方式预先知道此代码,以便每次用户输入内容时在文本框中按下按钮,它将gridview中的值添加到彼此之下。

现在这段代码会覆盖,所以我只能在gridview中有一行



Is i possible to foreach this code in some way so every time the user enter something in the textboxes and presses the button it adds the values in the gridview under each other.
Right now this code overwrites so i only can have one line in the gridview

推荐答案

DataTable dt = new DataTable();

dt.Columns.Add("FName");
dt.Columns.Add("LName");

DataRow dr = dt.NewRow();
dr["FName"] = "Deependra";
dr["LName"] = "Singh";
dt.Rows.Add(dr);

GridViewAllAssigments.DataSource = dt;
GridViewAllAssigments.DataBind();

foreach (GridViewRow row in GridViewAllAssigments.Rows)
{
    lbl1 = (Label)row.FindControl("Label1");
    lbl2 = (Label)row.FindControl("Label2");

    if (lbl1 != null)
        lbl1.Text = Textbox1.text;

    if (lbl2 != null)
        lbl2.Text = Textbox2.text;
}


请尝试以下..

以下Html ..

Try below..
Html below..
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
           <Columns>
               <asp:BoundField DataField="RowNumber" HeaderText="Row Number" />
               <asp:TemplateField HeaderText="From">
                   <ItemTemplate>
                       <asp:Label ID="Label1" runat="server" />
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="To">
                   <ItemTemplate>
                       <asp:Label ID="Label2" runat="server" />
                   </ItemTemplate>
               </asp:TemplateField>
           </Columns>
       </asp:GridView>
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:TextBox ID="TextBox2"

           runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button"

               OnClick="Button1_Click" />





代码背后..



Code behind..

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            SetInitialRow();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        AddNewRowToGrid();
    }
    private void SetInitialRow()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("From", typeof(string)));
        dt.Columns.Add(new DataColumn("To", typeof(string)));
        dr = dt.NewRow();
        dr["RowNumber"] = 1;
        dr["From"] = string.Empty;
        dr["To"] = string.Empty;
        dt.Rows.Add(dr);
        //dr = dt.NewRow();
        //Store the DataTable in ViewState
        ViewState["CurrentTable"] = dt;
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
    private void AddNewRowToGrid()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
            DataRow drCurrentRow = null;
            if (dtCurrentTable.Rows.Count > 0)
            {
                int row = dtCurrentTable.Rows.Count;
                //extract the TextBox values
                Label box1 = (Label)GridView1.Rows[rowIndex].Cells[1].FindControl("Label1");
                Label box2 = (Label)GridView1.Rows[rowIndex].Cells[2].FindControl("Label2");
                drCurrentRow = dtCurrentTable.NewRow();
                drCurrentRow["RowNumber"] = row + 1;
                dtCurrentTable.Rows[row - 1]["From"] = TextBox1.Text;
                dtCurrentTable.Rows[row - 1]["To"] = TextBox2.Text;
                rowIndex++;

                dtCurrentTable.Rows.Add(drCurrentRow);
                ViewState["CurrentTable"] = dtCurrentTable;
                GridView1.DataSource = dtCurrentTable;
                GridView1.DataBind();
            }
        }
        else
        {
            Response.Write("ViewState is null");
        }
        //Set Previous Data on Postbacks
        SetPreviousData();
    }
    private void SetPreviousData()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentTable"];
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Label box1 = (Label)GridView1.Rows[rowIndex].Cells[1].FindControl("Label1");
                    Label box2 = (Label)GridView1.Rows[rowIndex].Cells[2].FindControl("Label2");
                    box1.Text = dt.Rows[i]["From"].ToString();
                    box2.Text = dt.Rows[i]["To"].ToString();
                    rowIndex++;
                }
            }
        }
    }


Modify the code previous i posted.
using session or viewstate add more records to gridview.

aspx.cs:
 protected void btnclick_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        if (Session["DataTable"] != null)
        {
            dt = (DataTable)Session["DataTable"];
        }
        else
        {
            DataColumn cl = new DataColumn("From");
            dt.Columns.Add(cl);
            cl = new DataColumn("To");
            dt.Columns.Add(cl);
        }

        //-- add first row in datatable
        DataRow dr = dt.NewRow();
        dr[0] = txt1.Text;
        dr[1] = txt2.Text;
        dt.Rows.Add(dr);
        grdview.DataSource = dt;
        grdview.DataBind();
        Session["DataTable"] = dt;
    }


这篇关于如何在按钮上预览gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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