Hallo zusammen,
ich habe meinen ersten Dialog auf Basis einer Datenstruktur erstellt. Ich bin hierbei analog zu Rezept 13 vorgegangen.
Abweichend vom Beispiel habe ich jedoch 2 Schlüsselfelder, Datetime Datum und Int32 MAID.
Diese beiden Felder sind auch in der Datenquelle des Navigationselements als Schlüsselfelder angelegt.
In Visual Studio:
public class ZeiterfassungDataService : DataServiceBase
{
Beim Aufruf der Bildschirmmaske wird mir jedoch beim Debuggen in der Methode
public override DataActionResult<DataContainer> GetItem(DataActionRequest request)
{
im Request als key[0] das Datum geliefert, keys[1] ist hingegen immer leer.
Wenn ich beim Debuggen key[1] manuell setzte, wird anschliessend auch normal das Formular geladen.
Wo wird festgelegt, was im Key[0-2] des Requests steht?
Bzw. Warum ist dieser bei mir nur teilweise gefüllt?
Gruss Mark
ich habe meinen ersten Dialog auf Basis einer Datenstruktur erstellt. Ich bin hierbei analog zu Rezept 13 vorgegangen.
Abweichend vom Beispiel habe ich jedoch 2 Schlüsselfelder, Datetime Datum und Int32 MAID.
Diese beiden Felder sind auch in der Datenquelle des Navigationselements als Schlüsselfelder angelegt.
In Visual Studio:
public class ZeiterfassungDataService : DataServiceBase
{
private const string KeyField1 = "Datum";
private const string KeyField2 = "MAID";
public override void PrepareMetadata(DataObjectBase rawMetadata)
{
}private const string KeyField2 = "MAID";
public override void PrepareMetadata(DataObjectBase rawMetadata)
{
DataStructure dataStructure = rawMetadata as DataStructure;
if ((dataStructure != null))
{
if ((dataStructure != null))
{
if (!string.IsNullOrEmpty(KeyField1))
{
}{
DataFieldObjectBase field1 = dataStructure.Fields.TryGetItem(KeyField1);
if ((field1 != null))
{
if ((field1 != null))
{
dataStructure.PrimaryKeyField1 = KeyField1;
}if (!string.IsNullOrEmpty(KeyField2))
{
}{
DataFieldObjectBase field2 = dataStructure.Fields.TryGetItem(KeyField2);
if ((field2 != null)) {
}dataStructure.PrimaryKeyField2 = KeyField2;
}Beim Aufruf der Bildschirmmaske wird mir jedoch beim Debuggen in der Methode
public override DataActionResult<DataContainer> GetItem(DataActionRequest request)
{
string[] keys = DecodeKeys(request.Key);
DataContainer result = new DataContainer();
Fischar.Personal.ZeiterfassungItem bo = new Fischar.Personal.ZeiterfassungItem();
ZeiterfassungManager manager = new ZeiterfassungManager(Mandant);
try
{
catch (DataNotFoundException)
{
catch (Exception ex)
{
}DataContainer result = new DataContainer();
Fischar.Personal.ZeiterfassungItem bo = new Fischar.Personal.ZeiterfassungItem();
ZeiterfassungManager manager = new ZeiterfassungManager(Mandant);
try
{
bo = manager.GetItem(Convert.ToDateTime(keys[0]), Convert.ToInt32(keys[1]));
FillDto(result, bo);
return DataActionResult.Succeeded(result);
}FillDto(result, bo);
return DataActionResult.Succeeded(result);
catch (DataNotFoundException)
{
return DataActionResult.NotFound<DataContainer>();
}catch (Exception ex)
{
return DataActionResult.ServerError<DataContainer>(ex);
}im Request als key[0] das Datum geliefert, keys[1] ist hingegen immer leer.
Wenn ich beim Debuggen key[1] manuell setzte, wird anschliessend auch normal das Formular geladen.
Wo wird festgelegt, was im Key[0-2] des Requests steht?
Bzw. Warum ist dieser bei mir nur teilweise gefüllt?
Gruss Mark
Zuletzt bearbeitet: