Category Archives: ASP.net

Custom Control: Modifikasi Gridview

Dalam review akhir tahun tentang kompetensi di ASP webform ada satu point tentang membuat custom control. Karena proyek webform yang saya kerjakan sebelumnya tidak melakukan custom control, akhirnya saya di minta untuk membuat sampel tentang hal ini.

Disini saya akan memodifikasi gridview. Saya akan menambahkan satu kolom checkbox di kolom pertama.  Jika dibutuhkan kita tinggal set property true atau false untuk mengaktifkan.
Read the rest of this entry

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

Format Tanggal di Dalam GridView

Jika ingin menampilkan data tanggal (datetime) di dalam gridview dengan format tertentu, kita perlu set property “DataFormatString” di colom BoundField menjadi

DataFormatString=”{0:?}”. Dimana tanda ? adalah karakter kode format.

contoh:

<asp:GridView ID="GridView1" runat="server" Width="100%" >
    <Columns>
	<asp:BoundField HeaderText="Tanggal" DataField="Tgl" DataFormatString="{0:D}" />
    </Columns>
</asp:GridView>

Berikut Daftar karakter yang digunakan untuk format tanggal di gridview.
Read the rest of this entry

Menampilkan UserControl (.ascx) Secara Dinamis

Usercontrol (.ascx) paling umum digunakan untuk menampilkan header dan footer. Bagaimana menampilkan usercontrol yang berbeda-beda di suatu halaman sesuai kondisi tertentu. Misalnya ketika user A login, maka usercontrol A yang di load, user lainnya menggunakan usercontrol B.

1. Tambahkan reference di halaman page (.aspx) di bagian page directive.

<%@ Reference Control="~/WebUserControlA.ascx" %>
<%@ Reference Control="~/WebUserControlB.ascx" %>

2. Tambahkan control placeholder di halaman page. Placeholder ini digunakan sebagai lokasi dimana usercontrol yang di load akan diletakkan.

<asp:PlaceHolder ID="placeholder1" runat="server"></asp:PlaceHolder>

3.Di code, tambahkan kode di bagian Page_Init. Misal userlogin adalah userA, maka webusercontrolA yang diload.

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    If Session("USERLOGIN").ToString() = "userA" Then
        Dim head As WebUserControlA = DirectCast(Page.LoadControl("~/WebUserControlA.ascx"), WebUserControlA)
        placeholder1.Controls.Add(head)
    Else
        Dim head As WebUserControlB = DirectCast(Page.LoadControl("~/WebUserControlB.ascx"), WebUserControlB)
        placeholder1.Controls.Add(head)
    End If
End Sub

Usercontrol akan di load di placeholder. Semoga bermanfaat.

Optimalisasi Performance ASP.net

MENYIMPAN INFORMASI VIEWSTATE DI SERVER

Dalam aplikasi web terdapat banyak faktor yang mempengaruhi performance. Salah satu yang menjadi ‘kekurangan’ ASP.net adalah Viewstate. Viewstate ini berisi informasi-informasi dari semua control yang ada di page. Informasi control ini sebenarnya diproses di server dan kemudian di simpan di viewstate dan ditempelkan ke page dan dikirim ke client. Dan tentu saja, semakin besar informasi viewstate ini, semakin besar pula ukuran file yang di transfer ke client. Untuk melihat informasi viewstate, buka halaman .aspx dan lihat kode sumbernya (view source)

Setiap control di halaman selalu memiliki viewstate padahal tidak semua digunakan. Jika ketika proses postback kita tidak memerlukan informasi dari suatu control maka kita tidak perlu menyimpan viewstate. Kita bisa mematikan viewstate suatu control dengan set ‘EnableViewState=false’ di property control. Tentunya kita harus jeli, menentukan control mana yang memerlukan viewstate dan mana yang tidak.

Selain setting diatas, kita juga bisa memindahkan informasi viewstate ini ke server, jadi tidak akan diikutsertakan dalam page yang dikirim ke client. Untuk menyimpan informasi viewstate di server, kita perlu meng override method ‘SavePageStateToPersistenceMedium’ dan method ‘LoadPageStateFromPersistenceMedium’

Read the rest of this entry

Membuat Link Download dan Membuka Save as Dialog

Berikut adalah bagaimana cara membuat download link di website, Ketika link di klik, terkadang file akan di buka di browser. Lalu bagaimana agar file tidak dibuka di browser, tapi disimpan di client (muncul save as dialog)

Response.ContentType = "application/octet-stream"
Response.AppendHeader("Content-Disposition", "attachment; filename=namafile.xlsx")
Response.TransmitFile(Server.MapPath("~/Template/namafile.xlsx"))
Response.End()

ini akan membuka Open/Save dialog box dengan namafile.xlsx sebagai nama default. Tentu saja dengan asumsi bahwa filenya tersedia di server. Untuk file gambar yang di generate di memory kita bisa menggunakan Response.BinaryWrite()

Happy coding