ASP.net中使用ListBox一点经验

来源:互联网 发布:it产品包装 编辑:程序博客网 时间:2024/05/01 23:58

网页中添加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);
      }