日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在程序中设置infopath中的整型等域值时出错解决方法

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在程序中设置infopath中的整型等域值时出错解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近一直和infopath表單打交道,碰到的問題也比較多,剛剛就碰到一個在程序中修改infopath表單中域的內容時出錯的問題,寫出來與大家共享一下,我想這個問題,可能玩infopath的話,遲早會碰上的吧。
具體表現就是在代碼中對一些值類型的域進行更改的時候,代碼報錯,出錯信息:"Schema validation found non-data type errors."
小弟對xml schema真的不是很了解,所以找了半天,最后總算在infopath team blog上找到標準答案
文章地址:http://blogs.msdn.com/infopath/archive/2006/11/28/the-xsi-nil-attribute.aspx
?

xsi:nil屬性

你是否曾經在程序中設置域值時碰到schema valiadation錯誤?很多時候這個錯誤的原因是節點定義了“nillable”屬性. Nillable屬性是一個特殊的屬性,它能出現在一個XML schemaxsd:elment.如果一個元素定義了xsi:nil屬性,意味著這個元素被定義了,但是沒有值,因此它是沒有內容的。

然而,如果你試圖在程序中給一個定義了nillable屬性的節點設置值,你會得到一個錯誤信息:“Schema validation found non-data type errors.”。你可能會發現nillable屬性常被定義在下面幾種數據類型上:

  • Whole Number (integer)
  • Decimal (double)
  • Date (date)
  • Time (time)
  • Date and Time (dateTime)

要解決這個問題,你的代碼需要先檢測nil屬性是否被定義了。如果定義了,那需要在給節點設置值之前移除這個屬性。下面這段簡單的程序使用一個XpathNavigator類,檢查節點的node是否有nil屬性。如果存在則刪除掉。

public?void?DeleteNil(XPathNavigator?node)
{
if?(node.MoveToAttribute("nil",?"http://www.w3.org/2001/XMLSchema-instance"))
??????node.DeleteSelf();
}


上面這段代碼是通用的,你能很簡單的調用這段代碼在你需要編程改變一個域的值之前。下面是一個例子,這段代碼被一個按鈕的click事件調用。

//Create?a?Navigator?object?for?the?main?data?source
//?為主數據源創建一個Navigator對象
XPathNavigator?xn?=?this.MainDataSource.CreateNavigator();

//Create?a?navigator?object?for?the?field?(node)?
//where?we?want?to?set?the?current?date?value
//?為你要設置當前日期值的一個域(節點)創建一個navigator對象
XPathNavigator?xnfield1?=?xn.SelectSingleNode("/my:myFields/my:field1",?this.NamespaceManager);

//Check?if?the?"nil"?attribute?exists?on?this?node
//?檢查節點是否存在?“nil”屬性
DeleteNil(xnfield1);

//Create?a?new?dateTime?object?for?the?current?date
//?創建一個包含當前日期的新的dateTime對象
DateTime?curDate?=?new?DateTime(DateTime.Today.Year,?DateTime.Today.Month,?DateTime.Today.Day);

//Set?the?value?of?field1?to?the?current?date?in?the?
//correct?format:?yyyy-mm-dd
//?設置field1的值為使用”yyyy-mm-dd”格式的當前日期
xnfield1.SetValue(curDate.GetDateTimeFormats().GetValue(5).ToString());


轉載于:https://www.cnblogs.com/pengyuan512/archive/2008/06/24/1228947.html

總結

以上是生活随笔為你收集整理的在程序中设置infopath中的整型等域值时出错解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。