二个问题的记录
一, DataGrid问题: 以前,当DataGrid有分页时,经常会出现“无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。”错误,出现的问题原因是删除最后一页的最后一条记录,会使得该页无效。或者,在别的页面上,点击搜索,因为搜索达不到该页的页数。也会出现此问题。一直苦于想不到解决之道!
其实,明白了也就很简单,出现错误会抛出HttpException异常,那我就在DataGrid绑定数据前,用Try来捕获异常即可:
try
{
Grid.DataSource=dt;
Grid.DataBind();
}
catch(HttpException e)
{
Grid.CurrentPageIndex=0;
Grid.DataSource=dt;
Grid.DataBind();
}
{
Grid.DataSource=dt;
Grid.DataBind();
}
catch(HttpException e)
{
Grid.CurrentPageIndex=0;
Grid.DataSource=dt;
Grid.DataBind();
}
一切问题解决。开心...^-^
二,一个xml字符串加入xml中的问题:
XmlDocument xmldoc=new XmlDocument();
XmlElement root = xmldoc.CreateElement("CONFIG");
xmldoc.AppendChild(root); //创建根结点
XmlElement cssnode = xmldoc.CreateElement("CSS");
root.AppendChild(cssnode);
cssnode.InnerText=scssfile; //创建Css结点
XmlElement titlenode = xmldoc.CreateElement("TITLE");
root.AppendChild(titlenode);
titlenode.InnerText=stitle; //创建title结点
XmlElement foldernode = xmldoc.CreateElement("FOLDER");
root.AppendChild(foldernode);
foldernode.InnerText=sfolder; //创建folder结点
XmlElement pagenode = xmldoc.CreateElement("PAGESIZE");
root.AppendChild(pagenode);
pagenode.InnerText=spagesize; //创建PageSize结点
XmlElement datanode = xmldoc.CreateElement("DATACOLUMN");
root.AppendChild(datanode);
string sxmlcolumn = RemoveAsp(sdatacolumn); //去除掉asp:字符串,否则保存xml文件时出错,提示说命名空间错误。
string xmlfile2=@"<root>"+sxmlcolumn+@"</root>"; //加上根结点,xml必须
XmlDocument doc = new XmlDocument(); //加入DataColumn子节点
doc.LoadXml(xmlfile2);
XmlElement node = doc.DocumentElement;
foreach(XmlNode i in node.ChildNodes) //获取每个子节点
{
XmlNode xx = xmldoc.ImportNode(i,true); //从另一个文档导入节点
datanode.AppendChild(xx);
}
xmldoc.Save(sfolder+@"\ConfigAspx.xml");
XmlElement root = xmldoc.CreateElement("CONFIG");
xmldoc.AppendChild(root); //创建根结点
XmlElement cssnode = xmldoc.CreateElement("CSS");
root.AppendChild(cssnode);
cssnode.InnerText=scssfile; //创建Css结点
XmlElement titlenode = xmldoc.CreateElement("TITLE");
root.AppendChild(titlenode);
titlenode.InnerText=stitle; //创建title结点
XmlElement foldernode = xmldoc.CreateElement("FOLDER");
root.AppendChild(foldernode);
foldernode.InnerText=sfolder; //创建folder结点
XmlElement pagenode = xmldoc.CreateElement("PAGESIZE");
root.AppendChild(pagenode);
pagenode.InnerText=spagesize; //创建PageSize结点
XmlElement datanode = xmldoc.CreateElement("DATACOLUMN");
root.AppendChild(datanode);
string sxmlcolumn = RemoveAsp(sdatacolumn); //去除掉asp:字符串,否则保存xml文件时出错,提示说命名空间错误。
string xmlfile2=@"<root>"+sxmlcolumn+@"</root>"; //加上根结点,xml必须
XmlDocument doc = new XmlDocument(); //加入DataColumn子节点
doc.LoadXml(xmlfile2);
XmlElement node = doc.DocumentElement;
foreach(XmlNode i in node.ChildNodes) //获取每个子节点
{
XmlNode xx = xmldoc.ImportNode(i,true); //从另一个文档导入节点
datanode.AppendChild(xx);
}
xmldoc.Save(sfolder+@"\ConfigAspx.xml");
///////////////Edit By 2005-6-8
命名空间错误今天在CSDN上看到了解决方法,以下是代码:
怎样解析带有命名空间的XML,我的语句如下:
Dim node As System.Xml.XmlNode
Dim tempnode As XmlNode
Dim resourcesNode As XmlNode
Dim xmlroot As XmlNode = document.DocumentElement
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(document.NameTable)
nsmgr.AddNamespace("xx","http://www.adlnet.org/xsd/adlcp_rootv1p2")
tempnode = xmlroot.SelectSingleNode("//xx:organizations/organization/title",nsmgr)
'这个语句为什么解析不了带有命名空间的XML,具体应该怎样写啊?
'回答:
'每一层都要加前缀
"//xx:organizations/xx:organization/xx:title"
Dim node As System.Xml.XmlNode
Dim tempnode As XmlNode
Dim resourcesNode As XmlNode
Dim xmlroot As XmlNode = document.DocumentElement
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(document.NameTable)
nsmgr.AddNamespace("xx","http://www.adlnet.org/xsd/adlcp_rootv1p2")
tempnode = xmlroot.SelectSingleNode("//xx:organizations/organization/title",nsmgr)
'这个语句为什么解析不了带有命名空间的XML,具体应该怎样写啊?
'回答:
'每一层都要加前缀
"//xx:organizations/xx:organization/xx:title"