Infopath Drop-DownList Box’a Programsal olarak Item Ekleme
Kullanıcı adı ve bölümüne göre kullanıcının bulunduğu
bölümdeki yöneticileri Dropdown liste eklemek için öncelikli olarak userName’i alacağımız metodumuzu yazarız.
DataSource olarak bir XML belgesi kullanacağız
public void UserName()
{
string
username = Application.User.UserName;
DataSet
ds = ReadXmlDataAdAllusers();
DataTable
dt = ds.Tables[0];
for
(int i = 0; i < dt.Rows.Count; i++)
{
if(dt.Rows[i]["userid"].ToString()==username)
{
string
b = dt.Rows[i]["Full"].ToString();
string
c = dt.Rows[i]["Department"].ToString();
MainDataSource.CreateNavigator().SelectSingleNode("/my:alanlarım/my:username",
NamespaceManager).SetValue(b);
MainDataSource.CreateNavigator().SelectSingleNode("/my:alanlarım/my:dep",
NamespaceManager).SetValue(c);
}
}
}
Kullanıcı adını infopath’in Application.User.UserName
özelliğini kullanarak alırız.
Ve kodumuzda kullanıcılara ait bilgileri AdusersAll xml
belgesinden okumak için bir metod
tanımlarız.
public DataSet ReadXmlDataAdAllusers()
{
DataSet
dataSet = new DataSet();
foreach
(DataTable dataTable in dataSet.Tables)
dataTable.BeginLoadData();
dataSet.ReadXml(@"\\portalsql\AccessRights\AdUsersAll.xml");
foreach
(DataTable dataTable in dataSet.Tables)
dataTable.EndLoadData();
return
dataSet;
}
Daha sonra Dropdownliste yeni Itemlar yazacak metodumuzun kullanacağı
XML belgesini yazıp infopath projesinin kullanacağı klasöre bırakır veri
bağlantısı olarak bu belgeyi gösteririz.
Kaynak.xml
<?xml version="1.0" encoding="utf-8"
?>
<options>
<option>
<value/>
<displayname/>
</option>
<option>
<value/>
<displayname/>
</option>
</options>
Kaynak.xml belgesinin repeating grup olması gerekir.
Şimdi dropdownlistbox’ın özelliklerine girip kaynak.xml belgesini veri kaynağı olarak gösteririz.
kaynak.xml’in kullanacağı dropdown liste Item ekleyecek
metodumuzu yazarız.
private void
ADDItem(string mail,string
ad)
{
XPathNavigator
DOM = DataSources["kaynak"].CreateNavigator();
XPathNavigator
group1 = DOM.SelectSingleNode("//options",
NamespaceManager);
XPathNavigator
field1 = DOM.SelectSingleNode("//options/option",
NamespaceManager);
XPathNavigator
newnode = field1.Clone();
newnode.SelectSingleNode("value").SetValue(mail);
newnode.SelectSingleNode("displayname").SetValue(ad);
group1.AppendChild(newnode);
}
Kullanıcının bulunduğu bölümdeki yöneticileri ekleyeceğimiz için Açılır liste kutumuza AddItem metodumuz kullanıcı adı ve bölüm olmak üzere iki değer alır.
private
void RemoveFirstItem()
{
XPathNavigator
DOM = DataSources["kaynak"].CreateNavigator();
XPathNavigator
group1 = DOM.SelectSingleNode("//options",
NamespaceManager);
XPathNavigator
field1 = DOM.SelectSingleNode("//options/option",
NamespaceManager);
XPathNavigator
newnode = field1.Clone();
field1.DeleteSelf();
}
RemoveFirstItem() metodu ile form yüklenirken dropdown liste eklenen Itemlar arasında boşluk olmamasını sağlar.
Dropdown liste bölüm yöneticilerini ekleyecek
Metod Maneger();
private void Managers()
{
XPathNodeIterator managers = DataSources["ADmanager"].CreateNavigator().Select("//Table1", NamespaceManager);
foreach
(XPathNavigator manager in managers)
{
string
department = manager.SelectSingleNode("Department").Value;
string
dep = MainDataSource.CreateNavigator().SelectSingleNode("/my:alanlarım/my:dep", NamespaceManager).Value;
string
name = manager.SelectSingleNode("full").Value;
string mail = manager.SelectSingleNode("email").Value;
if((department
== dep))
{
ADDItem(mail,name);
}
}
}
Form yüklenirken
public void FormEvents_Loading(object
sender, LoadingEventArgs e)
{
RemoveFirstItem();
UserName();
Managers();
}
No comments:
Post a Comment