Arsip Blog

Binding Bulan (month) ke DropdownList

Disini saya ingin mencatat bagaimana cara binding nama-nama bulan (month) ke dropdownlist secara dinamis.
Nama bulan diambil dari class DateTimeFormatInfo.

Berikut kode selengkapnya. Asumsikan kita punya dropdownlist dengan ID=”Dropdownlist1″.

Private Sub BindMonthToDropdown()
	Dim info As System.Globalization.DateTimeFormatInfo
	info = System.Globalization.DateTimeFormatInfo.GetInstance(Nothing)

	Me.Dropdownlist1.Items.Clear()
	For i As Integer = 1 To 12
		Me.Dropdownlist1.Items.Add(New ListItem(info.GetMonthName(i), i.ToString()))
	Next
End Sub

Semoga bermanfaat

Happy Coding

Iklan

Melihat dan Modifikasi XML SOAP WCF Web Service

Di projek terakhir, saya mendapat tugas membuat program untuk melakukan signing terhadap request ke web service. Selain itu ada permintaan agar XML SOAP request yang telah di signing dan XML SOAP response dari web service disimpan ke dalam database untuk keperluan audit. Ketika melakukan invoke ke web service, tidak ada property yang menjelaskan struktur/bentuk dari XML SOAP nya. Lalu bagaimana cara mendapatkan XML SOAP yang dikirim maupun yang diterima dari web service?
Read the rest of this entry

Mendapatkan Enumerasi Member Dari Description Attribute

Sebelumnya saya pernah menulis tentang mendapatkan string deskripsi dari enumerasi (baca disini).
Kali ini saya menulis bagaimana melakukan kebalikannya, Mendapatkan enumerasi member berdasarkan string deskripsi.

Misal kita punya enumerasi semacam ini

public Enum JenisHewan
{
   [Description("Cow")]
   Sapi,

   [Description("Cat")]
   Kucing,

   [Description("Dog")]
   Anjing
}

Dari enum tersebut, misal kita mendapat input “cow”, “Cat” atau “Dog”, nah bagaimana kita mendapatkan value Sapi, Kucing atau anjing dari input tersebut?

static JenisHewan MapperStringToEnumHelper(string str)
{
    var tipe = typeof(JenisHewan);
    int returnValue = 0;

    foreach (FieldInfo fi in tipe.GetFields())
    {
        DescriptionAttribute attibute = (DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute));

        if (attibute != null)
        {
            if (attibute.Description == str)
            {
                returnValue = (int)fi.GetValue(null);
                break;
            }
        }
    }

    return (JenisHewan)returnValue;
}

Sekarang bagaimana mendapat enumerasi dari string, misal mendapatkan enum ‘Sapi’ dari string “Sapi” atau mendapatkan enum ‘Kucing’ dari string “Kucing”?

static JenisHewan MapperStringToEnumHelper(string str)
{
     var tipe = typeof(JenisHewan);
     int returnValue = 0;
     System.Reflection.FieldInfo fi = tipe.GetField(str);
     returnValue = (int)fi.GetValue(null);

     return (JenisHewan)returnValue;
}

Semoga tips singkat bisa berguna.
Happy coding

Threading Menggunakan Delegates

Threading satu cara menjalankan beberapa bagian program secara pararel. Tujuannya adalah agar aplikasi bisa lebih responsif.
Sebagai contoh:

Public Class AdmPropinsi
     ....
     Public Delegate Function GetDataDelegate() As System.Data.DataSet
	
     Public Function GetData() As System.Data.DataSet
     Dim ds As New DataSet
     Try
          Using conn
               If conn.State = ConnectionState.Closed Then conn.Open()
               Using cmd
                    cmd.Connection = conn
                    cmd.CommandText = "Q_Select_Propinsi"
                    cmd.CommandType = CommandType.StoredProcedure

                    da = New OleDbDataAdapter()
                    da.SelectCommand = cmd
                    da.TableMappings.Add("TBR_PROV", "pro")
                    da.Fill(ds, "pro")
                End Using
            End Using
        Catch ex As OleDb.OleDbException
            Throw Exception
	End Try
        Return ds
    End Function
End Class

Di Class diatas ada method GetData() yang akan mengambil informasi dari database dan disimpan ke dataset. Selain method juga didefinisikan delegate function yang juga bertipe sama, DataSet (Baris 3).
Untuk memanggil method diatas dan diproses secara paralel di thread yang lain,
Read the rest of this entry

Menghitung Interval Waktu di C#

Di bahasa VB.net, DateDiff digunakan untuk menghitung interval hari, jam, menit dan detik antara dua waktu. Namun fungsi ini tidak tersedia di C#. Ketika sedang ‘otak-atik’ C#, saya menemui kesulitan ketika harus menghitung interval antara dua waktu. Setelah bertanya-tanya ke Om Google dan mencoba beberapa kode akhirnya saya mendapatkan pengganti dari fungsi DateDiff ini yaitu: TimeSpan

Saya membuat contoh kode berikut dalam VB.net:

Dim awal As DateTime = New DateTime(2010, 12, 1, 12, 13, 9)
Dim akhir As DateTime = New DateTime(2011, 1, 12, 13, 22, 10)

Dim dd As Double = DateDiff(DateInterval.Second, awal, akhir)

Console.WriteLine("awal : " & awal.ToString("dd/MM/yyyy HH:mm:ss"))
Console.WriteLine("akhir : " & akhir.ToString("dd/MM/yyyy HH:mm:ss"))

Console.WriteLine("selisih jam: " & DateDiff(DateInterval.Hour, awal, akhir))
Console.WriteLine("selisih menit: " & DateDiff(DateInterval.Minute, awal, akhir))
Console.WriteLine("selisih detik : " & DateDiff(DateInterval.Second, awal, akhir))
Console.WriteLine("HH:mm:ss --> " & ((dd - (dd Mod 3600)) / 3600 & ":" & (((dd - (dd Mod 60))) / 60) Mod 60 & ":" & (dd Mod 60)))

Hasilnya seperti gambar berikut:

Lalu bagaimana dengan C#? Saya mengubah kode diatas menjadi C# dan menggunakan TimeSpan.

DateTime awal = new DateTime(2010, 12, 1, 12, 13, 9);
DateTime akhir = new DateTime(2011, 1, 12, 13, 22, 10);
TimeSpan span = akhir.Subtract(awal);

double d1 = span.TotalSeconds;

Console.WriteLine("awal : " + awal.ToString("dd/MM/yyyy HH:mm:ss"));
Console.WriteLine("akhir : " + akhir.ToString("dd/MM/yyyy HH:mm:ss"));
Console.WriteLine("selisih hari: " + span.TotalDays);
Console.WriteLine("selisih jam: " + span.TotalHours);
Console.WriteLine("selisih menit: " + span.TotalMinutes);
Console.WriteLine("selisih detik : " + span.TotalSeconds);
Console.WriteLine("HH:mm:ss --> " + ((d1 - (d1 % 3600)) / 3600 + ":" + (((d1 - (d1 % 60))) / 60) % 60 + ":" + (d1 % 60)));

hasilnya:

Jika diperhatikan, ada sedikit perbedaan dalam hal ketelitian ketika menggunakan DateDiff dan TimeSpan, tetapi hasil akhirnya (dalam jam:menit:detik) tetap sama. Dan ini sesuai dengan yang saya butuhkan.

Tambahan:
Sebenarnya dengan TimeSpan, untuk mendapatkan selisih jam, menit detik tidak perlu repot-repot menghitung total detik dengan rumus di code diatas. Cukup dengan kode

Span.ToString()

akan mendapatkan hasil dengan format day.HH:mm:ss.

Semoga bermanfaat. Happy coding.

Menyimpan Image Dalam File Resource

Setelah beberapa bulan terakhir disibukkan oleh pekerjaan, akhirnya bisa sedikit mengambil nafas. Beberapa waktu yang lalu ada teman yang lagi belajar membuat aplikasi desktop, dia menanyakan bagaimana cara agar gambar-gambar yang digunakan dalam aplikasi tidak diubah-ubah. Sebenarnya saya sendiri hanya punya 0 experiance untuk applikasi desktop, karena selama ini hanya berkutat di aplikasi web. Tapi ada beberapa hal kecil yang kebetulan saya tahu.

Untuk menyimpan file-file gambar seperti yang ditanyakan tersebut, salah satunya bisa menggunakan file resource.
Read the rest of this entry

Membaca Enumerasi

Jika kita mempunyai sekumpulan data yang secara logic saling berhubungan dan nilainya tidak berubah, kita bisa mendefinisikannya dalam enumerasi (Enum). Enum hanya bisa kita definisikan di level Namespace atau modul. Tipe data Enum bisa dideklarasikan sebagai Byte, Integer, Long, SByte, Short, UInteger, ULong, atau UShort. Untuk lebih detilnya silahkan baca di MSDN.

Read the rest of this entry