我们经常要用到的绑定数据列,怎么才能获取单列作为数据源呢?
个人所知,有以下几种方法,因为能力有限,可能写得不全,或者不好,请给我指引,要是还有什么好方法,希望你能告诉我...![]()
某些情况下我以DropDownList来做例子的.
方法一:SqlCommand对象
①直接用sql语句查询一个字段返回,然后直接绑定到数据源SqlDataReader就OK了.(挺讨厌所以我不乐意这样做. )
dropdownlist1.DataSource=mydatareader;
dropdownlist1.DataBind();
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
②不在sql查询语句下手,改用SqlDataReader.看下面示例:
While(mydatareader.Read())
{
dropdownlist1.items.add(mydatareader.getstring(i));
// getstring(i)里的i是指字段的列号.列号的起始值是0
}
方法二:SqlDataAdapter对象
①直接用sql语句查询一个字段返回并填充到DataSet,然后绑定DataSet里的一个table就OK了.(挺讨厌所以我不乐意这样做.)
sqldataadapter1.fill(mydataset,"talbename");
dropdownlist1.DataSource=mydataset.Tables["talbename"].defaultview;
dropdownlist1.DataBind();
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
②同样不在sql查询语句下手,利用生成了的SqlDataAdapter对象,调用SelectCommand的commandtext属性重新填充DataSet.
sqldataadapter1.selectcommand.commandtext="select name from mytables";
sqldataadapter1.fill(mydataset,"talbename");
dropdownlist1.datasource=mydataset.Tables["talbename"].defaultview;
dropdownlist1.databind();
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
③利用DataTable的Rows[i]["字段名"]..
for(int i=0;i<mydataset.Tables[0].Rows.Count;i++)
{
dropdownlist1.Items.Add(ds.Tables[0].Rows[i]["Filename"].ToString());
}
当然,你写成这种形式也是可以的.
foreach( DataRow dataRow in dataTable.Rows )
{
dropdownlist1.Items.Add( new ListItem( dataRow["i"].ToString() );/ / 其实,dataRow["i"],你也可以换成对应的
} dataRow["Filename"]....
方法三:想利用ArrayList对象,可以写成:
sqldataadapter1.fill(mydataset,"talbename");
ArrayList myarraylist = new ArrayList();
int n = mydataset.Tables["talbename"].Rows.Count;
for (int i=0;i<n;i++)
{
myarraylist.Add(mydataset.Tables["talbename"].Rows[i]["Filename"];
}
dropdownlist1.datasource=mydataset.Tables["talbename"];
dropdownlist1.databind();
小结:
上面的例子,我不仅说了关于绑定数据列的方法,还顺便讲了各种绑定dropdownlist的方式.
现在补充说明dropdownlist控件绑定的注意点.
1).用dropdownlist1.Items.Add( new ListItem( …));这种形式,不必再设定:
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
2).用绑定ArrayList的形式,同样不必再设定:
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
3)除此之外的绑定,应加上以下这两个属性:
dropdownlist1.DataTextField = "Filename";
dropdownlist1.DataValueField ="Filename";
否则会绑定不成功......会出现这种情况.
在下拉表列显示System.Data.DataRowView
4)DataTextField和DataValueField的属性不是一定要设为相同的.
如
dropdownlist1.DataTextField = "名字";
dropdownlist1.DataValueField ="ID";
析
dropdownlist1的DataTextField,用下拉菜单中显示出来的文字.
dropdownlist1的DataValueField ,用于真实的值.
获取方法:
dropdownlist1.SelectedItem.Text 获取下拉项显示出来的文字内容.如上例中的"名字";
dropdownlist1.SelectedItem.Value 获取下拉项对应的值,这个值对用户而言是透明的.如上例中的"ID".
问题:
> 当遇到控件ListItem和DropDownList绑定数据库数据后selectedindex数
值始终为-1,导致无法选定索引号。
> 考虑解决办法:不直接绑定,数据库数据连接到ArrayList后再用控件的
Items.Add方法添加内容
绑定数据列方法集
浙公网安备 33010602011771号