一个关于DataGrid和DataView的问题,很棘手!!

meiyan11 2003-09-14 06:12:37
private void Button1_Click(object sender, System.EventArgs e)
{
string sqlstring="Provider=MSDAORA.1;User ID=scott;Data Source=orac9i;Password=tiger";
string sqlstring2="select * from student3 where loginid="+"'"+TextBox1.Text+"'";
OleDbConnection con=new OleDbConnection(sqlstring);
try
{
con.Open();
Button1.Text="连接成功";
OleDbDataAdapter sqlAda = new OleDbDataAdapter(sqlstring2,con);
sqlAda.SelectCommand.CommandType=CommandType.Text;
DataSet ds = new DataSet();
sqlAda.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind();

}
catch (Exception ex)
{
Button1.Text="asdfasdf";
}
finally
{
con.Close();

}

不难看出,点击Button1这个按钮,则以TextBox1中的内容为参数查询数据库,生成数据集.但因为student3这个表中的字段很多,我不想一下
子都在DataGrid1中显示,我只想显示几个字段,请问怎么通过代码实现.另外,查看一行的所有内容,我想通过点击DataGrid1中的某一行,然后
在页面中DataGrid1的下面放几个Label控件来显示这行各个字段的内容,我知道可能要用到dataview.请高手帮忙 ,能不能帮我写成这些代码,最好写的详细些.谢谢谢谢谢谢!!!!!!!!!
...全文
54 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nescafe8 2003-09-16
  • 打赏
  • 举报
回复
跟我联系,兄弟帮你!!baijinzhe@163.net
CMIC 2003-09-15
  • 打赏
  • 举报
回复
1.用DataGridTextBoxColumn, Jarod() 说得很清楚.
2.
Label1.Text=this.dataGrid1[dataGrid1.CurrentRowIndex,0].ToString();//选中第一列行内容
Label2.Text=this.dataGrid1[dataGrid1.CurrentRowIndex,1].ToString();//选中第一列行内容

......
rouser 2003-09-15
  • 打赏
  • 举报
回复
DataView dv = new DataView(sa.Tables[0]);
dv.RowFilter="過濾條件,即WHERE子句";
DataGrid1.dataSource=dv;
nescafe8 2003-09-15
  • 打赏
  • 举报
回复
虽然我没有完全看懂楼上的内容,不过我很感动,我想在csdn里如果每人都象楼上一样有爱心,有责任感,愿意不惜花费精力来帮助别人,那么我们我们程序员的队伍将是多么繁荣的一副景象.我真心的谢谢楼上回答我的问题,我会认真的看你写的内容,一定把它搞懂.谢谢谢谢!!
Jarod 2003-09-14
  • 打赏
  • 举报
回复
一、在DataGridTextBoxColumn 编辑器中设置

新建一个TableStyle,将此TableStyle.MappingName属性对应到这个TableStyle要控制的那个DataTable的名字
DataGridTableStyle myTableStyle = new DataGridTableStyle();
myTableStyle.MappingName = "myDateTable";

再建立几个DataGridColumnStyle,分别用来控制将要显示的列
DataGridColumnStyle myColumnStyle1 = new DataGridTextBoxColumn();
myColumnStyle1.MappingName = "OrderID";
myColumnStyle1.HeaderText = "订单号";
……

二、采用复杂数据绑定
复杂数据绑定指将一个控件绑定到多个数据元素的能力,通常绑定到数据库中的多条记录,或者绑定到多个任何其他类型的可绑定数据元素,一般是绑定到一个DataView。支持复杂绑定的控件的示例有DataGrid、ListBox 和 ErrorProvider 控件。

一般DataGrid控件都是跟一个DataView绑定,DataGrid的数据绑定属于复杂绑定,因为它绑定到有多条记录的表,DataGrid有两个属性同数据绑定有关:

DataGrid.DataSource 属性:获取或设置DataGrid所显示数据的数据源。一般是跟DataTable 、DataView 、DataSet 绑定,如果DataSource设定为DataSet,则引用包含的表不止一个,则必须向 DataMember 属性设置一个字符串,该字符串指定要绑定到的表。

DataGrid.DataMember 属性:获取或设置 DataSource中的特定列表,就是上述DataSource设定为DataSet时,要设定此属性来指定要绑定到的表。

经常有这种需求,一个窗体中有一个DataGrid,显示了一些数据,窗体上还有一些TextBox控件,用来显示DataGrid中的当前行的数据,一个TextBox控件对应DataGrid行的一个列,当DataGrid的当前行移动时,TextBox控件中的值也会跟着显示改变后的DataGrid的当前行。

要保证这些数据绑定控件保持同步就要一个统一管理数据绑定的机制来保证这些控件的同步,DotNet中负责数据同步的是BindingManagerBase,它是用来管理数据源的,绑定到同一个数据源的数据绑定控件都可以由BindingManagerBase统一管理。BindingManagerBase可以由Form.BindingContext.Item属性获得,此属性有两种重载:

public BindingManagerBase this[object DataSource] //获取与指定数据源关联的 BindingManagerBase
public BindingManagerBase this[object DataSource, string DataMember] //获取与指定数据源和数据成员相关联的一个 BindingManagerBase


所有的数据绑定控件的数据源同建立BindingManagerBase时传递的对象一样的,都将属于这个BindingManagerBase管理,比如,建立一个如下的BindingManagerBase:

BindingManagerBase myBindingManagerBaseParent = this.BindingContext[myDataSet,"customers"];


如果Form上有个DataGrid的DataGrid.DataSource = myDataSet;DataGrid.DataMember = "customers",那么这个DataGrid的数据源就在myBindingManagerBaseParent的管理之下了。
同样简单数据绑定的控件的DataSource也是跟 BindingManagerBase的DataSource一样,DataMember是BindingManagerBase的DataMember指定的那个表的某一列时,这个控件的数据源也在这个myBindingManagerBaseParent管理之下了:

dataGrid1.DataSource = myDataSet;
dataGrid1.DataMember = "customers";
textCustomerId.DataBindings.Add(new Binding("Text",myDataSet,"customers.customerid")); //TextBox的Text属性跟
//myDataSet的customers表的customerid字段绑定


BindingManagerBase控制的数据源有个当前行的概念,控件一旦跟数据源绑定后,DataGrid将显示数据源表的所有数据,不过在DataGrid的行标头里有个黑色的三角箭头用来指示当前行。简单绑定控件中显示的值将是数据源当前行的内容。

所以,只要我们改变BindingManagerBase的指针就行了,这个可以在界面上通过点击要到的那一行来改变当前行,也可以在程序中改变当前行的设置:

myBindingManagerBaseParent.Position = 10;


BindingManagerBase.Position属性的变化就会引起BindingManagerBase当前行的变化,也就是跟这个数据源绑定的DataGrid的当前行的变化,简单绑定控件的显示内容也就随之改变了。



jianglinchun 2003-09-14
  • 打赏
  • 举报
回复
1、select 字段1,字段2 from student ……
字段为你想选取的字段名
2、建议你好好看看.net framewrok sdk.
有些事情是不能帮忙的。
513 2003-09-14
  • 打赏
  • 举报
回复
1利用sql 语句筛选
select fields,fields2,fields from loginid="+"'"+TextBox1.Text+"'";

2手工绑定DataGrid

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧