【问题标题】:Adding row by row in GridView in runtime在运行时在 GridView 中逐行添加
【发布时间】:2011-08-07 15:37:45
【问题描述】:

我是 C# 新手。我想在运行时在 GridView 中添加行。我从 2 或 3 个表中收集数据。但每当我要去 bind() 它与 GridView,最后插入的行被当前行覆盖。并且 GridView 仅显示当前行。 是否可以将两行都显示在另一行下面?或者是否有任何代码可以这样做。请建议我的代码,以便我可以在我的项目中使用它。谢谢。

Answer::首先,您必须声明一个静态数据表。以及一个初始值为“true”的布尔变量。 然后执行以下代码--->>> 这是我的代码::

protected void btnAdd_Click(object sender, EventArgs e)
{
    int coursemasterid = Convert.ToInt32(dlAdmissionCourses.SelectedItem.Value);
    int batchmasterid = Convert.ToInt32(dlAssignBatch.SelectedItem.Value);


    string SQL1 = "SELECT coursename,coursefees,batchname FROM  CourseMaster,BatchMaster WHERE CourseMaster.coursemasterid=BatchMaster.coursemasterid and CourseMaster.coursemasterid="+coursemasterid+" and BatchMaster.batchmasterid="+batchmasterid+"";
      DataTable otable = new DataTable();
        otable = DbHelper.ExecuteTable(DbHelper.CONSTRING, CommandType.Text, SQL1, null);
        DataRow dr1 = otable.Rows[0];
        string coursename = dr1["coursename"].ToString();
        int coursefees = Convert.ToInt32(dr1["coursefees"]);
        string batchname = dr1["batchname"].ToString();

if (chkadd == true)
        {
            dtglb = new DataTable();  //here dtglb is a global datatable
            dtglb.Columns.Add("coursename", typeof(string));
            dtglb.Columns.Add("coursefees", typeof(int));
            dtglb.Columns.Add("batchname", typeof(string));

        }
        foreach (DataRow dr in otable.Rows)
        {
            dtglb.NewRow();
            dtglb.Rows.Add(coursename,coursefees,batchname);

        }
        chkadd = false;
        GridView1.DataSource = dtglb;
    GridView1.DataBind();           

}

【问题讨论】:

  • 在 select 语句中从所需表中选择数据或从表中单独选择数据并将所有结果合并到一个列表中并将其绑定到网格
  • 你现在怎么样..需要看代码
  • @V4Vendetta::感谢您的帮助。这里我提供我的代码。
  • @Mahesh::在我的代码中是否可以访问单个元素并将它们合并多行?如果是,那么如何?

标签: c# .net ado.net


【解决方案1】:

向 DataGridView 本身添加行

DataGridViewRow row = new DataGridViewRow();
dataGridView1.BeginEdit();
//your columns
row.Cells["columnOne"] = valueofone;
row.Cells["columnTwo"] = valueoftwo;
dataGridView1.Rows.Add(row);
dataGridView1.EndEdit();

【讨论】:

  • 感谢您的帮助。但是我怎样才能为各个列赋予值。在我的代码中是否可能?请参阅上面的代码。
  • @abatishchev:: 我试过你的代码,但我正在使用 webapplication 和 webcontent 表单。因此你的方法对我不起作用。如果存在任何解决方案,请帮助我。
  • @user698273:事实上,这是@Nighil 的代码,我只是对他的帖子进行了小修改。
  • @user698273:发布了一个新答案,请检查您代码中的一些更新
  • @Nighil:: 我已经测试了你的代码,但问题仍然存在。当我第二次单击添加按钮时,它会清除上次插入的前一行。有什么建议吗?
【解决方案2】:
  //declaring a datatable global in form 
        DataTable dtglb=new DataTable();

        //In click event    
    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=EMS;User ID=sa;Password=sa123");

    string SQL1 = "SELECT coursename,coursefees,batchname FROM  CourseMaster,BatchMaster WHERE CourseMaster.coursemasterid=BatchMaster.coursemasterid and CourseMaster.coursemasterid="+coursemasterid+" and BatchMaster.batchmasterid="+batchmasterid+"";
    SqlCommand cmd = new SqlCommand(SQL1, con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable ds = new DataTable();
    //DataColumn faculty = new DataColumn();
    da.Fill(ds);
    GridView1.DataSourceID = null;

    //New Code Added Here
    DataRow row = ds.NewRow();
    //your columns
    row["columnOne"] = valueofone;
    row["columnTwo"] = valueoftwo;
    dtglb.Rows.Add(row);
        foreach(DataRow dr in dtglb.Rows)
    {
     ds.Rows.Add(dr);
    }
    //=========
    GridView1.DataSource = ds;
    GridView1.DataBind();     

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2010-10-22
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多