C#查询出多行数据但只在datagridview中显示其中某一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#查询出多行数据但只在datagridview中显示其中某一行相关的知识,希望对你有一定的参考价值。

执行查询语句,查处了ID,名称,日期。但我只想在datagridview中显示出名称和日期,该怎么办?ID还另有用处,需要查出来。又不想分别写两个查询语句。

dataGridView1.Columns["id"].Visible = false;

参考技术A 两种方式:
1:如果绑定了id列,只需要隐藏id列即可,读取id时可以直接读取隐藏列的值获取id
2:压根就没有绑定id列,读取grid行数据时,读取绑定的该行的数据,从该数据中获取id使用即可
总结:从控件中读取id,从控件绑定的数据源读取id

同理可以从数据源中读取出想要的其他信息,在界面展示。不需要再查询。
参考技术B 把ID列隐藏就好了 参考技术C   查询的时候都查出来,显示的时候在 <Columns>只写名称和日期就行,求采纳

C#如何将DataGirdView1中勾选中checkbox多行 添加到另一个DatagridView2中急用要用代码。

// 变量
DataTable dtable =new DataTable(); //中间接收表
DataRow row; //定义行
变量dt 为DatagridView1的数据源

事件代码
Button_Click事件中代码
dtable = dt.Clone(); //先让中间表数据列DatagridView1的表的数据列相同
foreach (DataGridViewRow Row in dataGridView1.Rows) //DataGridView全部行

//判断是否选中
if (Row.Cells["Checked"].Value!= null && (bool)Row.Cells["Checked"].Value!= false)

// ["Checked"]为勾选列的列名
DataRowView drv = Row.DataBoundItem as DataRowView; //获取行中所有数据
row = (DataRow)drv.Row; //将dgv行中数据添加到定义行中
dtable.Rows.Add(row.ItemArray); //添加就可以了。

else

continue;//继续找


dataGridView2.DataSource = dtable; //最后绑定就行了

看看是不是你想要的。如果是就给分,不是的话 咱们还可以再加鈡嘛。追问

不好意思呵,是我没有写清楚,
如何将DataGirdView1窗口中勾选中checkbox多行 添加到另一个窗口DatagridView2中

追答

就上面的代码继续写:
dtable 是Frm1中的变量 上文代码有介绍 自己翻翻
那么,你在Frm2中定义一个属性
//frm2中的属性
public DataTable frm2dtTable

get return dtfrm2Table;
set dtfrm2Table = value;

在你点确认按钮时需要将

Frm2 frm2 =new Frm2();
frm2.frm2dtTable =dtable;
//
//Frm2中datagridView1
//
datagridView1.Datasource =Dtfrm2Table;
frm2.ShowDialog();
这样就可以实现你要的效果了。 哥们应该就是这些东西吧。
这里主要是用DataTable 做了一个中间的数据传递,获取第一表中的数据,保存到dtable,然后将数据再传给Frm2中的Frm2dtTable。

追问

追答

如上图所示
错误:
你的代码写错
//这个表自己克隆自己其中的行列依然是自己所拥有的行列
dtable = dtable.Clone(); /*错误的代码*/
正确的写法:
//克隆表 使两个表中的列相等
dt = (dataGridView1.DataSource as DataTable); //这里绑定的数据源是DataTable类型
dtable = dt.Clone();

参考技术A private void Form1_Load(object sender, EventArgs e)        {            DataBound();        }        &#47;&#47;&#47; &lt;summary&gt;        &#47;&#47;&#47; 绑定数据        &#47;&#47;&#47; &lt;&#47;summary&gt;        private void DataBound()        {            SqlConnection conn = new SqlConnection(&quot;server=.;uid=sa;pwd=123321;database=pubs&quot;);            SqlDataAdapter da = new SqlDataAdapter(&quot;select * from jobs&quot;);            DataSet ds=new DataSet();            da.Fill(ds);            if (ds.Tables[0].Rows.Count &gt; 0)            {                this.dataGridView1.DataSource = ds.Tables[0].DefaultView;            }        }        &#47;&#47;&#47; &lt;summary&gt;        &#47;&#47;&#47; 删除按钮        &#47;&#47;&#47; &lt;&#47;summary&gt;        &#47;&#47;&#47; &lt;param name=&quot;sender&quot;&gt;&lt;&#47;param&gt;        &#47;&#47;&#47; &lt;param name=&quot;e&quot;&gt;&lt;&#47;param&gt;        private void button1_Click(object sender EventArgs e)        {            for (int i = 0; i &lt; dataGridView1.Rows.Count; i++)            {                if (dataGridView1.Rows[i].Cells[&quot;选择&quot;].EditedFormattedValue.ToString().Equals(&quot;True&quot;))                {                     &#47;&#47;删除吧                    DataBound();                }            }        }        &#47;&#47;&#47; &lt;summary&gt;        &#47;&#47;&#47; 全选+反选        &#47;&#47;&#47; &lt;&#47;summary&gt;        &#47;&#47;&#47; &lt;param name=&quot;......余下全文>>追问

不好意思呵,是我没有写清楚,
如何将DataGirdView1窗口中勾选中checkbox多行 添加到另一个窗口DatagridView2中

参考技术B check事件中获取e的行号,将整行数据add到gridview2中追问

不代明白

追答

假设checkbox在第一例,事件大致代码如下。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

if ((bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)

dataGridView2.Rows.add(dataGridView1.Rows[e.RowIndex]);//直接写的,你试试这个思路。代码可能有错。

else



追问

不好意思呵,是我没有写清楚,
如何将DataGirdView1窗口中勾选中checkbox多行 添加到另一个窗口DatagridView2中

追答

那你 foreach一下dataGridView1.Rows,判断checkbox是true还是false。true的add进去呗。

追问

不太明白,能写明白一点,能提供一下代码?

以上是关于C#查询出多行数据但只在datagridview中显示其中某一行的主要内容,如果未能解决你的问题,请参考以下文章

C#如何将DataGirdView1中勾选中checkbox多行 添加到另一个DatagridView2中急用要用代码。

c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行

SQL插入多行,但只执行一次子查询

C# DataGridView如何显示查询数据?

c#怎么把datagridview给填满

c# datagridview新添加一行