大家好,最近我在做一个作业的时候遇到一个问题,问题在标题以说明,代码大概情况如下:<Books>   
 <Book >
 <BID>B001</BID> 
      <CATEGORY>Technical</CATEGORY> 
      <TITLE> Understanding XML </TITLE> 
      <PRICE> $1.5 </PRICE> 
      <AUTHORNAME>John  Hicks</AUTHORNAME> 
  </Book>  
  <Book >
       <BID>B002</BID> 
       <CATEGORY>Technical</CATEGORY>   
       <TITLE> XML Unleashed </TITLE>
       <PRICE> $2.5 </PRICE> 
       <AUTHORNAME>Thomas Simpson</AUTHORNAME> 
  </Book> 
  <Book >
       <BID>B003</BID> 
       <CATEGORY>Fiction</CATEGORY>   
       <TITLE> The Rainmakers </TITLE>
       <PRICE> $2.5 </PRICE> 
       <AUTHORNAME>John Grisham</AUTHORNAME> 
  </Book>
  <Book >
       <BID>B004</BID> 
       <CATEGORY>Fiction</CATEGORY>   
       <TITLE> Good Earth </TITLE>
       <PRICE> $2.5 </PRICE> 
       <AUTHORNAME>Pearl Buck</AUTHORNAME> 
  </Book>
</Books>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Collections;public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        bookidlist.DataSource = createDataSource();
        bookidlist.DataTextField = "BID";
        bookidlist.DataBind();     
    }
    private ICollection createDataSource()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("BID", typeof(string));
        DataSet lanDS = new DataSet();
        string filePath = Server.MapPath(ConfigurationManager.AppSettings["BooksXmlFile"].ToString());
        lanDS.ReadXml(filePath);
        if (lanDS.Tables.Count > 0)
        {
            foreach (DataRow copyRow in lanDS.Tables[0].Rows)
            {
                dt.ImportRow(copyRow);
            }
        }
        DataView dv = new DataView(dt);
        return dv;
    }
}执行之后,选定不了值,每次都是自动刷新回初始值,怎么解决呢???

解决方案 »

  1.   


    if (!IsPostBack)
    {
    bookidlist.DataSource = createDataSource();
            bookidlist.DataTextField = "BID";
            bookidlist.DataBind();    
    }
      

  2.   

    添加
    if(!IspostBack)
    {
    //绑定数据
    }
      

  3.   

    本帖最后由 amandag 于 2009-05-06 22:38:58 编辑
      

  4.   

    同意,这个回答
    if(!IsPostBack) 
            {
                bookidlist.DataSource = createDataSource();
                bookidlist.DataTextField = "BID";
                bookidlist.DataBind();
            }
      

  5.   

    楼上的几位朋友谢谢帮忙,现在的情况是能成功绑定但是他又多出了一排数据,就是点开下拉菜单后他是这样显示的:
    B001
    B002
    B003
    B004
    B001
    B002
    B003
    B004
    怎么把下面重复的数据去掉呢 我想了半天也没发现我哪里错了???
      

  6.   

    protected void Page_Load(object sender, EventArgs e)
        {
    if(!this.IsPostBack)
    {
           bookidlist.Items.clear();
            bookidlist.DataSource = createDataSource();
            bookidlist.DataTextField = "BID";
            bookidlist.DataBind(); 
    }    
        }
    在其它的地方,droplist重新添加时,一定要先清空先前的。