读书人

infopath 下拉列表框的有关问题

发布时间: 2012-02-28 13:06:34 作者: rapoo

infopath 下拉列表框的问题
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");


break;
}
}

读书人网 >行业软件

热点推荐