GridView不刷新LINQ to XML数据?

时间:2011-06-02 14:19:50

标签: asp.net gridview linq-to-xml

如果有一个包含3个条目的Xml文件

国家/地区名称=“丹麦”InternetTLD =“dk”

国家/地区名称=“Holland”InternetTLD =“nl”

国名=“Greate britain”InternetTLD =“uk”

在我的网页中,如果有文本框,gridview和xmlDataSource。 当我没有在文本框中指定任何内容时,所有三个国家都使用LINQ查询加载到xmlDataSource中,然后显示在gridview中。 但是当我在文本框中指定例如'Denmark'时,我继续查看所有3条记录,而LINQ查询的count属性显示为1,而xmlDataSource的Data属性也只显示1个国家(丹麦),因为它应该是

问题是gridView似乎没有刷新新数据???

这是我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        QueryXml();
    }  // Page_Load()


    private void QueryXml()
    {
        XElement _countries = XElement.Load(Server.MapPath(COUNTRIES_XML));
        IEnumerable<XElement> query = null;

        // extract all countries
        if (txtCountry.Text == "" || txtCountry.Text == "*")
        {
            query = from c in _countries.Elements()
                    select c;
        }
        else
        {
            // Extract all elements where Name has been specified
            query = from c in _countries.Elements()
                    where c.Attribute("Name").Value.ToString().StartsWith(txtCountry.Text, StringComparison.CurrentCultureIgnoreCase)
                    select c;
        }

        // Set xml filtered string data source
        xmlDsCountries.Data =
            "<Countries>" +
            string.Join("", query.Select(country => country.ToString())) +
            "</Countries>";
        // set the data source of the gridview
        gdvwCountries.DataSource = xmlDsCountries;
        // Show the data
        gdvwCountries.DataBind();

        lblMsg.Text = query.Count().ToString();
    }  // QueryXml()

为什么不刷新gridView?

谢谢

克里斯

1 个答案:

答案 0 :(得分:1)

尝试关闭XmlDataSource

上的缓存
protected void Page_Load(object sender, EventArgs e)
{
    xmlDsCountries.EnableCaching = false;
    //...........the rest.............
}