2

我已经完成了这件事,它显示了一个错误,如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
4

5 回答 5

7

我认为你应该使用数据表。根据您的需要准备数据表并将此数据表绑定到您的网格视图这里是 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);
于 2013-05-01T06:00:07.110 回答
3

请试试这个,它将如何帮助你。

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();
}
于 2014-04-03T10:52:06.167 回答
0

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

于 2013-05-01T05:56:23.040 回答
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

于 2013-05-01T05:57:43.317 回答
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();
    }
于 2014-01-24T11:37:40.830 回答