如何在Gridview中手动添加数据

时间:2013-05-01 05:45:57

标签: asp.net vb.net

我已完成此操作并显示错误Index was out of range. Must be negative and non zero value.在以下代码中

Dim index_flag as Integer = 0
GridView1.Rows(index_flag).Cells(1).Text = ds.Tables(0).Rows(index_flag).Item("curr_datetime").ToString
GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_id").ToString
GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_name").ToString
GridView1.Rows(index_flag).Cells(3).Text = ds.Tables(0).Rows(index_flag).Item("dc_volt").ToString

5 个答案:

答案 0 :(得分:6)

我认为你应该使用数据表。 根据需要准备数据表,并将此数据表绑定到网格视图 这里是C#的例子,但你可以用VB.NET的语法做同样的事情

        DataTable dt = new DataTable();
        dt.Columns.Add("sr_no");
        dt.Columns.Add("item_name");
        dt.Columns.Add("item_id");
        dt.Columns.Add("qty");
        dt.Columns.Add("rate");
        dt.Columns.Add("total");

        var dr = dt.NewRow();
        dr["sr_no"] = txtSr.Text;
        dr["item_name"] = ddlItem.SelectedItem.Text;
        dr["item_id"] = ddlItem.SelectedValue;
        dr["qty"] = txtQty.Text;
        dr["rate"] = txtRate.Text;
        dr["total"] = int.Parse(txtQty.Text) * int.Parse(txtRate.Text);

        dt.Rows.Add(dr);

答案 1 :(得分:2)

请试试这个,它会对你有什么帮助。

DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        dt = new DataTable();
        MakeDataTable();
    }
    else
    {
        dt = (DataTable)ViewState["DataTable"];
    }
    ViewState["DataTable"] = dt;
}

private void MakeDataTable()
{
    dt.Columns.Add("Name");
    dt.Columns.Add("Number");
}

protected void Button2_Click(object sender, EventArgs e)
{
    AddToDataTable();
    BindGrid();
}

private void AddToDataTable()
{
    DataRow dr = dt.NewRow();
    dr["Name"] = txtName.Text;
    dr["Number"] = txtNumber.Text;
    dt.Rows.Add(dr);
}

private void BindGrid()
{
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

答案 2 :(得分:0)

为什么要尝试将数据表中的每一行添加到GridView?请尽可能使用GridView.DataSource = DataTable和GridView。的DataBind()。这将完成将数据表中的数据添加到网格视图的工作。

答案 3 :(得分:0)

您缺少GridView1.Rows.Add()

Dim index_flag as Integer = 0
GridView.Rows.Add()
        GridView1.Rows(index_flag).Cells(1).Text = ds.Tables(0).Rows(index_flag).Item("curr_datetime").ToString

        GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_id").ToString
        GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_name").ToString
        GridView1.Rows(index_flag).Cells(3).Text = ds.Tables(0).Rows(index_flag).Item("dc_volt").ToString

UPDATE

对于Asp GridView,请检查此链接 我已查看过您的问题,您可以查看此链接http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deleting-rows-from-ASP-NET

答案 4 :(得分:0)

通过手动将文本框中的值添加到gridview,以下方法很简单。试试这个

protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn();

        if (dt.Columns.Count == 0)
        {
            dt.Columns.Add("Title1", typeof(string));
            dt.Columns.Add("Title2", typeof(string));
        }

        DataRow NewRow = dt.NewRow();
        NewRow[0] = TextBox1.Text;
        NewRow[1] = TextBox2.Text;
        dt.Rows.Add(NewRow);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }