动态GridView +DataTable

<asp:GridView ID="GridView1" runat="server"
                onrowediting="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                    <asp:CommandField ShowEditButton="True" />
                    <asp:CommandField ShowDeleteButton="True" />
                </Columns>
            </asp:GridView>
           
            <table>
                <tr>
                    <td>text:<asp:TextBox ID="newtextTextBox" runat="server"></asp:TextBox></td>
                    <td>amount:<asp:TextBox ID="amountTextBox" runat="server"></asp:TextBox></td>
                </tr>
            </table>
            <asp:Button ID="addnewlineButton" runat="server" Text="add new line" OnClick="addnewlineButton_Click" />

cs

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("text");
            dt.Columns.Add("amount");
            ViewState["table"] = dt;
            BindGrid();
        }

    }

    private void BindGrid()
    {
        DataTable dt = ViewState["table"] as DataTable;
        if (dt != null)
        {
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

    }

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

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

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DataTable dt = ViewState["table"] as DataTable;
        if (dt != null)
        {
            dt.Rows.RemoveAt(e.RowIndex);
            GridView1.EditIndex = -1;
            BindGrid();
        }
       
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
         DataTable dt=ViewState["table"] as DataTable;
         if (dt != null)
         {
             dt.Rows[e.RowIndex][0] = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
             dt.Rows[e.RowIndex][1] = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
             GridView1.EditIndex = -1;
             BindGrid();

         }
    }

    protected void addnewlineButton_Click(object sender, EventArgs e)
    {
        DataTable dt=ViewState["table"] as DataTable;
        if (dt != null)
        {
            DataRow dr = dt.NewRow();
            dr[0] = newtextTextBox.Text;
            dr[1] = amountTextBox.Text;
            dt.Rows.Add(dr);
            ViewState["table"] = dt;

            BindGrid();
            newtextTextBox.Text = "";
            amountTextBox.Text = "";
           
        }

原文地址:https://www.cnblogs.com/hubj/p/1310758.html