• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Whokay 必ず勝つ!頑張ろう!
博客园    首页    新随笔    联系   管理    订阅  订阅
愚老先生的 WSS3.0 Lists服务的使用方法,帮了大忙
WSS 3.0 List WebService使用点滴
Text Field全为空格时:<Eq><FieldRef Name='TextFieldName' /><Value Type='Text'></Value></Eq>
Text Field不含任何字符时:<IsNull><FieldRef Name='TextFieldName' ></FieldRef></IsNull>,上条不成立
Text Field不区分英文大小写,这一点应该主要取决于数据库的语言设置。

User Field格式为: UserID;#UserName,如:16;#Leo Ge
如果某个字段为空,则有可能不返回该字段,对XmlNode的Attribute必须先作有效性检验,如:
if (i.Attributes.GetNamedItem("ows_Machine")!=null) taskItem.Machine = i.Attributes["ows_Machine"].Value;

GetListItems的一般性做法:
XmlDocument xmlDoc = new XmlDocument();
XmlElement query 
= xmlDoc.CreateElement("Query");
XmlElement viewFields 
= xmlDoc.CreateElement("ViewFields");
XmlElement queryOptions 
= xmlDoc.CreateElement("QueryOptions");
query.InnerXml 
= "<Where>"
                    
+ "<Or>"
                        
+ "<Eq><FieldRef Name='Machine' /><Value Type='Text'>" + machineName + "</Value></Eq>"
                        
+ "<Or>"
                            
+ "<IsNull><FieldRef Name='Machine'></FieldRef></IsNull>"
                            
+ "<Eq><FieldRef Name='Machine' /><Value Type='Text'></Value></Eq>"
                        
+ "</Or>"
                    
+ "</Or>"
                    
+ "</Where>";
viewFields.InnerXml 
= "";
queryOptions.InnerXml 
= "";
XmlNode node 
= wss.GetListItems("{E7E1EEC8-F627-48A9-8228-F4BC1CA45F0C}", "{FC3C7DFF-7399-4944-A155-56AF8BCB0F11}", query, viewFields, "100", queryOptions, null);

NameTable nt 
= new NameTable();
XmlNamespaceManager xnm 
= new XmlNamespaceManager(nt);
xnm.AddNamespace(
"rs", "urn:schemas-microsoft-com:rowset");
xnm.AddNamespace(
"z", "#RowsetSchema");

xmlDoc 
= new XmlDocument();
xmlDoc.ImportNode(node,
true);

foreach (XmlNode i in node.SelectNodes("rs:data/z:row",xnm))
{
   
int id =int.Parse(i.Attributes["ows_ID"].Value);
   
string title = i.Attributes["ows_Title"].Value;
   
bool reloadData = i.Attributes["ows_Reload_x0020_Data"].Value == "1" ? true : false;
   DateTime created 
= DateTime.Parse(i.Attributes["ows_Created"].Value);
   
string createdBy = i.Attributes["ows_Author"].Value; // 格式为userID;#userName
   DateTime modified = DateTime.Parse(i.Attributes["ows_Modified"].Value);
   
string modifiedBy = i.Attributes["ows_Editor"].Value; // 格式为userID;#userName
   EnumStatus status = (EnumStatus) Enum.Parse(typeof(EnumStatus), i.Attributes["ows_Status"].Value);
  
if (i.Attributes.GetNamedItem("ows_Machine")!=null) { //可能为空的字段要先作检查
        string machine = i.Attributes["ows_Machine"].Value;
     }

}

posted on 2007-11-20 10:59  Vince  阅读(227)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3