网页中添加ListBox后,在其属性中设置 AutoPostBack 为 true,使点击后,自动返回服务器处理.
同时在Page_Load中,一定要加上判断
if(!IsPostBack)
{
...
}
才能使更新有效.
1,搜索access中一列数据添加到listbox中
OleDbConnection thisConnection = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("data.mdb"));
thisConnection.Open();
string strCom = "select uid,pwd from account";
OleDbDataAdapter thisAdapter = new OleDbDataAdapter(strCom,thisConnection);
DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet);
this.ListBoxAccount.DataSource = thisDataSet;
this.ListBoxAccount.DataTextField = "uid";
this.ListBoxAccount.DataValueField = "pwd";
//表示所要显示的列名为 uid .
this.ListBoxAccount.DataBind();
thisConnection.Close();
2,搜索列名填入listbox
更改上面部分代码为:
thisAdapter.Fill(thisDataSet);
//DataSet中只有一个表 上面就直接fill(DataSet) , 下面DataSet.Table中也用0表示第一个表
ArrayList ColNames = new ArrayList();
foreach(DataColumn dc in thisDataSet.Tables[0].Columns)
ColNames.Add(dc.ColumnName);
//更改listbox的数据源为动态数组即可
this.ListBoxAccount.DataSource = ColNames;
this.ListBoxAccount.DataBind();
若要筛选列名只要再绑定listbox数据源前在加入动态数组筛选即可. 如插入
ArrayList CNames = new ArrayList();
for(int i=0;i<ColNames.Count;i++)
if(thisDataSet.Tables[0].Rows[0][i].ToString() == "1" || thisDataSet.Tables[0].Rows[0][i].ToString() == "0")
CNames.Add(ColNames[i]);
//由于DataSet中填充的只有搜索到的一行数据 使用thisDataSet.Tables[0].Rows[0][i] 表示此0行数据 第i列
//更改数据源
this.ListBoxAccount.DataSource = CNames;
3,读取listbox 中的各项到动态数组
ArrayList ListUser = new ArrayList();
foreach(System.Web.UI.WebControls.ListItem item in this.ListBoxUser.Items)
{
ListUser.Add(item);
}