繁体   English   中英

获取自定义Datepicker的值,保存到firebase数据库

[英]Get the value of custom Datepicker and save it to firebase database

我的问题是我想将日期选择器的值插入到 firebase,但我不知道该怎么做。

我已经制作了一个自定义日期选择器,但它的用途是制作占位符“出生日期”这是我的 xaml;

<frame //some property here>
<stacklayout  //some property here>
<frame  //some property here>
<image  //some property here/>
<grid>
<local:BirthdayDatePickerControl x:Name="entryField_DateOfBirth" >
                                    
                                </local:BirthdayDatePickerControl >
</grid>
</frame>
</stacklayout>
</frame>

这是我的代码(Myproj):Datepickerctrl.cs

public class DatePickerCtrl:DatePicker
{
public static readonly BindableProperty EnterTextProperty = BindableProperty.Create(propertyName: "Placeholder", returnType: typeof(string), declaringType: typeof(DatePickerCtrl), defaultValue: default(string));
public string Placeholder { get; set; }
}

此文件或代码也保存到 (Myproj) BirthdayDatePickerControl.cs:

public class BirthdayDatePickerControl : DatePicker
     {
           
            
             public static readonly BindableProperty EnterTextProperty = BindableProperty.Create(propertyName: "Placeholder", returnType: typeof(string), declaringType: typeof(BirthdayDatePickerControl), defaultValue: default(string));
             public string Placeholder { get; set; }
            
     }

这是我的代码(Myproj.android):

[assembly: ExportRenderer(typeof(BirthdayDatePickerControl), typeof(BirthdayDatePickerRenderer))] // this line is outside of my namespace in BirthdayDatePickerRenderer.cs

BirthdayDatePickerRenderer.cs

public class BirthdayDatePickerRenderer : DatePickerRenderer
     {
         public BirthdayDatePickerRenderer(Context context) : base(context)
         {
    
         }
    
         protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.DatePicker> e)
         {
             base.OnElementChanged(e);
             if (Control != null)
             {
                 Control.Text = "Birth Date";
             }
         }
     }

我预期的 output 仍然是我可以在我的日期选择器 UI 中放置一个占位符,还可以从日期选择器获取该数据并将其与 firebase 相同。

我尝试了一些试验和错误这就是我所做的

async public void signButton_Clicked(System.Object sender, System.EventArgs e)
        {

/*

some code here like assigning firstname or lastname and etc.
*/
  string dateOfBirth = entryField_DateOfBirth.ToString();

   CUSTOMER customer = new CUSTOMER();

   customer.CusBirthOfDate = dateOfBirth;
    var Savedata = await customerRepo.Save(customer);

         }

我认为你已经完成了大部分工作。 只需对 Button Clicked 处理程序做一个小改动:

async public void signButton_Clicked(System.Object sender, System.EventArgs e)
{
    ... 
  
    var date = entryField_DateOfBirth.Date.ToString().Split(" ")[0]; //get the date
    
    ...
}

如果要将Datepicker的默认占位符设置为“出生日期”,还是应该使用自定义render,否则xamarin.forms Datepicker无法识别这种字符串。 更多信息,您可以参考Xamarin.Forms DatePicker

希望对你有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM