infopath 下拉列表框的有关问题
infopath 下拉列表框的问题
http://www.bizsupportonline.net/infopath2007/programmatically-fill-populate-drop-down-list-box-infopath-2007.htm
1。根据上面的东西,帮出来默认第一行显示空,这是为什么?
(先不管里面有没有自己加的空记录)
2.然后如果我要获取当前值怎么获,我调试过了,我在FormEvents_Submit 里获当前列表的值时,获取的是第一项
这是为什么?
------解决方案--------------------
1.因为你没有清理干净啊,原来有两行,你只删除了一行。应该全部删除,然后再添加:
http://www.bizsupportonline.net/infopath2007/programmatically-fill-populate-drop-down-list-box-infopath-2007.htm
1。根据上面的东西,帮出来默认第一行显示空,这是为什么?
(先不管里面有没有自己加的空记录)
- C# code
DataTable dt1 = getDt(sql1); XPathNavigator DOM = DataSources["nextMan"].CreateNavigator(); XPathNavigator group1 = DOM.SelectSingleNode("//options", NamespaceManager); XPathNavigator field1 = DOM.SelectSingleNode("//options/option", NamespaceManager); field1.SelectSingleNode("value").SetValue(dt1.Rows[0]["DoName"].ToString()); field1.SelectSingleNode("displayname").SetValue(dt1.Rows[0]["Name"].ToString()); //RemoveFirstItem(); for (int i = 1; i < dt1.Rows.Count; i++) { AddItem(dt1.Rows[i]["DoName"].ToString().Trim(), dt1.Rows[i]["Name"].ToString().Trim()); } private void AddItem(string itemId, string itemName) { XPathNavigator DOM = DataSources["nextMan"].CreateNavigator(); XPathNavigator group1 = DOM.SelectSingleNode("//options", NamespaceManager); XPathNavigator field1 = DOM.SelectSingleNode("//options/option", NamespaceManager); XPathNavigator newNode = field1.Clone(); group1.AppendChild(newNode); newNode.SelectSingleNode("value").SetValue(itemId); newNode.SelectSingleNode("displayname").SetValue(itemName); }
2.然后如果我要获取当前值怎么获,我调试过了,我在FormEvents_Submit 里获当前列表的值时,获取的是第一项
这是为什么?
- C# code
XPathNavigator DOM = DataSources["nextMan"].CreateNavigator(); XPathNavigator group1 = DOM.SelectSingleNode("//options", NamespaceManager); XPathNavigator field1 = DOM.SelectSingleNode("//options/option", NamespaceManager); string x = field1.SelectSingleNode("value").Value.ToString().Trim();
------解决方案--------------------
1.因为你没有清理干净啊,原来有两行,你只删除了一行。应该全部删除,然后再添加:
- C# code
XPathNavigator filteredRoot = DataSources["FilteredItems"].CreateNavigator().SelectSingleNode("//WorkItems", NamespaceManager); XPathNodeIterator oldItems = filteredRoot.CreateNavigator().Select("WorkItem", NamespaceManager); for (int i = oldItems.Count - 1; i >= 0; i--) { XPathNavigator oldItem = DataSources["FilteredItems"].CreateNavigator().SelectSingleNode("//WorkItem[last()]", NamespaceManager); oldItem.DeleteSelf(); }
------解决方案--------------------
我也是遇到第一行是空行,不过我觉得这行还是有必要的,因为我可以选择空,infopath的Dropdownlist好像不能自己编辑吧,如果谁有这方面的资料请发给我 谢谢。
默认选中的话就要在初始的时候加个事件,用来setvalue Dropdownlist的 id
------解决方案--------------------
给你一段追加可重复节中的字段代码供参考:
XPathNodeIterator iterator = domNav.Select("/my:Task1/my:group1/my:group2", NamespaceManager);
while (iterator.MoveNext())
{
XPathNavigator tempFileNode = iterator.Current;
XPathNavigator xpExcel = tempFileNode.SelectSingleNode("my:field01", NamespaceManager);
if (xpExcel.MoveToAttribute("nil", "http://www.w3.org/2001/XMLSchema-instance"))
{
xpExcel.DeleteSelf();
xpExcel.SetValue("XXXXX");