DataBind bei Combobox
Sebastian Schweer
Hallo,ich habe mir eine Combobox gebaut und diese auf die Form "Inventory Master Data" (OITM) gelegt. Die Werte der Combobox werden aus einer Datenbank ausgelesen und angezeigt. Den dazu gehörenden Code habe ich hier gepostet:
http://www.meinsap.ch/forum.html?&L=ibnrmunsrywembv&tx_mmforum_pi1[action]=list_post&tx_mmforum_pi1[tid]=1143&tx_mmforum_pi1[page]=1&tx_mmforum_pi1[sword]=combobox#pid18619
Jedoch sollen die aus der Combobox ausgewählten Werte nun auch in der "Inventory Master Data" gespeichert werden. Hierzu finde ich leider kein Beispiel in der Anleitung und auch nicht im Forum. Könnte mir jemand verraten, wie ich das DataBind richtig setze, damit die Werte gespeichert werden. Ich habe folgendes versucht:
ComboBox addField1 = omboBox.CreateNew("ComboNeu1");
addField1.DataBind = DataBind.CreateNew("ComboNeu1");
addField1.DataBind.TableName = "OITM";
addField1.DataBind.Alias = "ComboNeu1";
Sobald ich nun aber das DataBind auf "true" setze, laufe ich auf einen Fehler. Dies hatte bei einer Textbox geklappt, funktioniert aber leider nicht bei der ComboBox.
addField1.DataBind.DataBound = true; // Fehler
Kann mir irgendjemand weiterhelfen?
Andreas Scherer
HalloVersuch mal ein UDF auf das Formular zu verschieben und an diesem UDF ComboBox ein dataBinding hinzufügen. Dann musst du dir keine Gedanken über das speichern der Daten machen.
Grüsse
Andy
Sebastian Schweer
Hallo Zusammen,das Data Bind bei Comboboxen hat nun doch funktioniert.
Hier der verwendete Quelltext für alle zukünftig etwas ähnliches nachbauen wollen:
/*****************************************************************
*
* @Author: Sebastian Schweer
* @Date: 17.01.2011
* @Form: Item Master Data (OITM / 150)
* @Description: Create a Label and three Comboboxes to the Item Master Data
*
**/
try
{
// Festlegen welches Element der Form als Referenzelement dient
Item refField = Item.GetFromUID(pVal.Form, "114"); // 114 = Manufaturer DropDown
Item refFieldLabel = Item.GetFromUID(pVal.Form, "115"); // 115 = Manufaturer Label
// Drei Comboboxen und ein Label definieren
ComboBox addField1 = ComboBox.CreateNew("ComboNeu1");
ComboBox addField2 = ComboBox.CreateNew("ComboNeu2");
ComboBox addField3 = ComboBox.CreateNew("ComboNeu3");
Label label1 = Label.CreateNew("Label1");
// Anbinden der ersten Combobox an Datenbank
addField1.DataBind = DataBind.CreateNew("ComboNeu1");
addField1.DataBind.TableName = "OITM";
addField1.DataBind.Alias = "DB_Colum_Name1";
addField1.DataBind.DataBound = true;
// Anbinden der zweiten Combobox an Datenbank
addField2.DataBind = DataBind.CreateNew("ComboNeu2");
addField2.DataBind.TableName = "OITM";
addField2.DataBind.Alias = "DB_Colum_Name2";
addField2.DataBind.DataBound = true;
// Anbinden der dritten Combobox an Datenbank
addField3.DataBind = DataBind.CreateNew("ComboNeu3");
addField3.DataBind.TableName = "OITM";
addField3.DataBind.Alias = "DB_Colum_Name3";
addField3.DataBind.DataBound = true;
// Ausrichtung der ersten Combobox festlegen
addField1.Top = refField.Top - 20;
addField1.TabOrder = refField.TabOrder- 3;
addField1.Left = refField.Left;
addField1.Width = (refField.Width) / 4;
addField1.Height = refField.Height;
// Ausrichtung der zweiten Combobox festlegen
addField2.Top = refField.Top - 20;
addField2.TabOrder = refField.TabOrder - 2;
addField2.Left = addField1.Left + addField1.Width + ((refField.Width / 4)/2)+1;
addField2.Width = (refField.Width) / 4;
addField2.Height = refField.Height;
// Ausrichtung der dritten Combobox festlegen
addField3.Top = refField.Top - 20;
addField3.TabOrder = refField.TabOrder - 1;
addField3.Left = addField2.Left + addField2.Width + ((refField.Width / 4)/2)+1;
addField3.Width = (refField.Width) / 4;
addField3.Height = refField.Height;
// Ausrichtung des Label festlegen
label1.Value = ("Label Name");
label1.Top = refFieldLabel.Top - 20;
label1.Left = refFieldLabel.Left;
label1.Width = refFieldLabel.Width;
label1.Height = refFieldLabel.Height;
// Comboboxen auf die Form hinzufügen
pVal.Form.AddItem(addField1);
pVal.Form.AddItem(addField2);
pVal.Form.AddItem(addField3);
pVal.Form.AddItem(label1);
pVal.Form.Update();
// Daten für das erste Combofeld auslesen
System.Data.SqlClient.SqlCommand cmd1 = new System.Data.SqlClient.SqlCommand();
cmd1.CommandText = "Select Code, Name from dbo.[@DB_Colum_Name1] order by Code";
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(cmd1))
{
while(sdr.Read())
{
string text0 = sdr.GetString(0).ToString();
string text1 = sdr.GetString(1).ToString();
addField1.ValidValues.Add(text0, text1);
}
}
// Daten für das zweite Combofeld auslesen
System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand();
cmd2.CommandText = "Select Code, Name from dbo.[DB_Colum_Name2] order by Code";
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(cmd2))
{
while(sdr.Read())
{
string text0 = sdr.GetString(0).ToString();
string text1 = sdr.GetString(1).ToString();
addField2.ValidValues.Add(text0, text1);
}
}
// Daten für das dritte Combofeld auslesen
System.Data.SqlClient.SqlCommand cmd3 = new System.Data.SqlClient.SqlCommand();
cmd3.CommandText = "Select Code, Name from dbo.[DB_Colum_Name3] order by Code";
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(cmd3))
{
while(sdr.Read())
{
string text0 = sdr.GetString(0).ToString();
string text1 = sdr.GetString(1).ToString();
addField3.ValidValues.Add(text0, text1);
}
}
pVal.Form.Update();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "OK");
}
return true;
0
Please sign in to leave a comment.
Comments
0 comments