CheckBoxList的数据绑定问题
学习asp.net,参照例子使用数据绑定自动填充CheckBoxList,数据库里有表
name sex age
张三 男 23
李四 男 24
赵六 女 20
用的DataSet,填充什么都不用说了,它的本意是把列名 name ,sex ,age 绑定到CheckBoxList上,但是用了
CheckBoxList1.DataSource=ds.Table[0].DefaultView;
CheckBoxList1.DataValueField=ds.Table[0].Columns[0].ColumnName;
CheckBoxList1.DataTextField=ds.Table[0].Columns[0].ColumnName;
CheckBoxList1.DataBind();
这样结果绑定的内容是 张三,李四,赵六
只是第一列的内容。不过明明这样写虽然不能实现最初目的,但是也应该是显示列名name才对啊,为什么会显示出内容来
不想用循环,如何使用DataValueField和DataTextField属性一次把列名绑定填充上?
直接用ds.Table[0].Columns.ToString()提示DataBind没有ColumnsCollection的属性。
------解决方案--------------------DataSet是用来取数据的,你绑列名用它有些浪费..
------解决方案--------------------不过是什么类型的数据库,都有些系统表或者系统视图存放这些源数据的,SQL Server中INFORMATION_SCHEMA.COLUMNS系统视图显示所有表的所有列
给个Demo
private void BindGrid()
{
SqlConnection cn = new SqlConnection(@ "server=.\SQLExpress;uid=sa;pwd=password;database=pubs ");
string strSQL = "select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'authors ' ";
SqlCommand cmd = new SqlCommand(strSQL, cn);
cn.Open();
CheckBoxList1.DataSource = cmd.ExecuteReader();
CheckBoxList1.DataTextField = "COLUMN_NAME ";
CheckBoxList1.DataBind();
cn.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}