Tampilkan postingan dengan label asp. Tampilkan semua postingan
Tampilkan postingan dengan label asp. Tampilkan semua postingan

Senin, 07 Maret 2016

Exporting ASP.NET C# HTML Table to excel file with common error : "...must be placed inside a form tag with runat=server" and "RegisterForEventValidation can only be called during Render"

Postingan pengingat lagi :) barusan coba code untuk export tabel ke excel namun kali ini tidak semulus biasanya, karena ada 2 error yang mengganjal setelahnya. Oke saya bahas dulu yang bagian code untuk export nya:

        Response.ContentType = "application/x-msexcel"; 
        Response.AddHeader("Content-Disposition", "attachment;filename=ExcelFile.xls");
        Response.ContentEncoding = Encoding.UTF8; 
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        table.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();

dulu saya pernah memakai code di atas dan langsung bisa sekali coba. Namun kali ini terganjal error ".... must be placed inside a form tag with runat=server."

untuk error di atas langsung aja ceploking code ini ke dalam code kita:
    public override void VerifyRenderingInServerForm(Control control)
    {
        /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
           server control at run time. */
    }

kemudian setelah diceplokin code di atas, errornya berubah menjadi:
"RegisterForEventValidation can only be called during Render"

untuk error di atas, pada bagian aspx nya, bagian tag page (paling atas) tambahin:
EnableEventValidation="false"

jadi gini
<%@ Page Title="" Language="C#" MasterPageFile="~/Peternak.master" AutoEventWireup="true" CodeFile="DataPerankingan.aspx.cs" Inherits="DataPerankingan" EnableEventValidation="false"%>

dan ternyata setelah saya coba, gak cuma tabel biasa aja yg keexport, tapi kalo di dalam tabel kita ada textbox nya, itu juga ikut keexport ^_^ jadi bagus deh tabelnya. Ok Clara mau lanjut lagi yaaah. Bye..

sekian dari saya,

Sorting Dictionary C# ASP.NET

postingan dalam rangka agar tidak lupa :D jadi gini, dictionary dalam C# tidak menyediakan fasilitas sorting seperti dalam list, so here is what I have done to sort my dict:

1. membuat dictionary

a. di sini saya menginisialisasi dict kambing dengan value nama kambing yang bertipe string dan key yaitu skor kambing dengan tipe float:
public static Dictionary<string, float> dictKambing = new Dictionary<string, float>();

b. kemudian mengisi dict satu persatu di dalam looping:
dictKambing.Add(namaKambing[i], arrayPreferensiAlternatif[i]);
dg kata lain:
dictKambing.Add("value", key);

2. proses sorting
menampung hasil sortingan darlam var items dengan code berikut:


var items = from pair in dictKambing
                    orderby pair.Value descending
                    select pair;

3. proses tampil
ditampilkan dengan looping:
foreach (KeyValuePair<string, float> pair in items)
        {
                 lb.Text = pair.Key.ToString();
                 tb.Text = pair.Value.ToString();
         }
Jadi deh...


sekian dari saya,

Selasa, 23 Februari 2016

Error saat install visual studio 2010: The request could not be performed because of an I/O device error.

Setelah  instal ulang kemudian saya memulai instal program yang saya butuhkan satu demi satu. Saya memulai dengan instal Microsoft Visual Studio 2010. Jadul banget ya? hehehe soalnya nanggung, program saya sebelumnya banyak yang pakai itu. Saat instal terjadi error sbb :  The request could not be performed because of an I/O device error. saat itu saya instal melalui DVD yang saya pinjem dari rentalan. 3x saya coba selalu berakhir dengan error tsb. setelah itu saya inget, masih nyimpen installer yang dulu sempat saya kopi dari kampus di HD saya. saya coba instal dan bisa. berarti kalo errornya kayak gitu, ada masalah sama CD nya. hehehe. oke problem solved.


sekian dari saya,

Rabu, 17 Februari 2016

Query for pivoting in Microsoft SQL Server

sebenarnya ini sudah temuan lama, sekitar 3 tahun yang lalu, namun karena berhubung saya pakai lagi, dan jadi ingat lagi, jadi pengen share supaya tidak lupa :D query nya dituliskan dalam bentuk procedure. dulu saya ambil dari sumber lain, namun saya lupa dulu ambil dari siapa ^^v. Siapapun dia terimakasih ya sudah membuatkan query pivoting ini. Berikut query yang sudah saya sesuaikan dengan kebutuhan saya:

DECLARE 
@cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX);
                       
select @cols = STUFF((SELECT distinct  ','  + QUOTENAME(s.SUBKRITERIA) from SUBKRITERIA s inner join TOPSIS t on s.ID_SUBKRITERIA=t.ID_SUBKRITERIA where s.is_deleted=0 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
set
@query = 'SELECT kambing,' + @cols + ' from  (select k.kambing, s.subkriteria, t.nilai from topsis t inner join subkriteria s on s.id_subkriteria=t.id_subkriteria inner join alternatif_kambing k on k.id_kambing=t.id_kambing ) x pivot (min(nilai) for subkriteria in (' + @cols + ')) p '
execute(@query)

bagian yang diganti adalah bagian yg saya bold dan berwarna selain hitam ya...
keterangan:

  • merah: diisi dengan query yang menyelect row yang akan dijadikan column heading. column heading ini bersifat dinamis(bisa berganti jumlah dan namanya sesuai dengan yg kita select di query tsb)
  • ungu: diisi dengan nama kolom yg akan menjadi acuan pengisian data pivot
  • biru: diisi dengan query untuk mengisi kolom ungu dan kolom2 yang telah kita sebutkan di bagian merah
  • pink: data yang dipivot
  • hijau: nama kolom yang dipakai rownya untuk menjadi column heading pivot

maaf ya kalo penjelasannya agak ribet. diutak atik dulu, dicoba-coba sendiri, nanti pasti bisa. kalo bingung, tanya aja di bagian komentar yah. will be glad to help you :)

oiya berikut screencapture dari tabel yg belum dipivot. tabel di bawah masih di join lagi dengan tabel kambing dan subkriteria untuk mendapatkan nama kambing dan subkriterianya


dan taraaaa... ini hasil setelah diterapkan query pivot di atas



sekian dari saya, semoga bermanfaat :)

Selasa, 28 April 2015

Source Code Perhitungan Certainty Factor (CF) pada Sistem Pakar Diagnosa Gangguan Gizi

Setelah saya posting tentang capture programnya, saya ingin membagikan code yag menjadi inti dari sistem pakar ini, yaitu perhitungan Certainty Factor. 

Untuk menghitung seberapa besar kepastian sesorang terkena peyakit tertentu, pertama-tama harus diketahui, CF Rule dan CF gejala dari input user.

CF input gejala dari user bisa berupa pilihan2 seperti pada gambar di bawah (Pasti tidak, Hampir pasti tidak, dll) dan untuk tiap pilihan di bawah mengandung nilai CF dengan range dari -1.0 hingga 1.0.

Setelah mendapat input CF gejala dari tiap user, CF gejala tersebut dikalikan dengan CF Rule dari suatu penyakit.
Jika satu penyakit termuat dalam beberapa rule (menjadi konsekuen dari antesenden beberapa rule), maka CF harus dikombinasikan dengan rumus berikut:

Karena kebetulan semua CF nya positif, jadi saya menggunakan rumus kombinasi yang pertama. Berikut contoh perhitungan CF Combine Untuk hipertensi:


Perhitungan CF (contoh untuk gangguan gizi hipertensi):
CF1,2(Hipertensi)=CF1(Hipertensi)+CF2(Hipertensi)-(CF1(Hipertensi)*CF2(Hipertensi))
=0.378+0.456-(0.378 x 0.456)
=0.661632
CF 12,3(Hipertensi)=CF12(Hipertensi)+CF3(Hipertensi)-(CF12(Hipertensi)*CF3(Hipertensi))
=0.661632+0.12-(0.661632 x 0.12)
=0.702236
CF123,4(Hipertensi)=CF123(Hipertensi)+CF4(Hipertensi)-(CF123(Hipertensi)*CF4(Hipertensi))
=0.702236+0.35-(0.702236 x 0.35)
=0.806454
CF1234,5(Hipertensi)=CF1234(Hipertensi)+CF5(Hipertensi)-
(CF1234(Hipertensi)*CF5(Hipertensi))
=0.806454+0.24-(0.806454 x 0.24)
=0.852905

Perhitungan CF seperti di atas dilakukan juga untuk gangguan-gangguan gizi
yang lain pada golongan IMT yang sama. Kemudian CF tiap gangguan gizi
dibandingkan dan dicari yang terbesar. Gangguan gizi yang memiliki CF
terbesar itulah yang merupakan gangguan gizi yang diidap oleh consultee..

Perhitungan CF Combine di atas, saya wujudkan dalam source code berikut (dalam bahasa C#)


sekian dari saya, semoga membantu, dan jangan lupa tinggalkan komentar Anda di bawah... Terima Kasih :)

Kamis, 11 April 2013

Programming Tutorial : Mengatur Properti Tab Index pada Web ASP C# (Arranging Tab Index Property on ASP C# Website)

ini agak remeh temeh sebenernya heehehe..tapi mungkin ada yg belum tahu.Tab Index ini sebenernya simple banget! tapi pentingggg! gunanya untuk mengatur urutan perpindahan fokusnya kursornya saat kita menekan tombol Tab di keyboard! tab index mempermudah perpindahan kursor tanpa harus menggunakan mouse...

ini contohnya :





pd form di atas, misal kita udah ngisi textbox username, di tab lalu pindah ke textbox password
cara ngaturnya cukup sorot textbox username>klik kanan>pilih properties>cari TabIndex>set dengan angka 3 misalnya.
trus sorot textbox password>klik kanan>pilih properties>cari TabIndex>set dengan angka 4. 
Indexnya berurutan +1

jadi deh :)
gampang kan! semoga bermanfaat ya!

sekian dari saya,

Programming Tutorial : Error / Exception Handling saat Pengiriman Email dari Web ASP C# (Error / Exception Handling when sending email from ASP C# Website)

pada postingan sebelumnya, saya sudah membahas tentang bagaimana caranya mengirim email melalui web ASP.. adakalanya pengiriman tsb tidak berhasil karena kemungkinan tidak ada koneksi internet atau sebab2 lain... untuk mengantisipasi error yang disebabkan oleh kegagalan pengiriman email, kita harus menggunakan exception handling.. nah bagaimana exception code yang digunakan utk keperluan tsb.. mari kita lihat :)
credit utk http://www.asp.net/web-forms/videos/how-do-i/how-do-i-implement-error-handling-when-sending-email-with-aspnet sbg sumber codenya... pada tutorial kali ini saya akan melampirkan code yang udah saya custom dengan keperluan saya:


try
                {
                    smtp.Send(mail);//proses pengiriman email
                }
                catch (System.Net.Mail.SmtpFailedRecipientsException recExc)
                {
                    for (int recipient = 0; recipient < recExc.InnerExceptions.Length - 1; recipient++)
                    {
                        System.Net.Mail.SmtpStatusCode statusCode;
                        //Each InnerException is an System.Net.Mail.SmtpFailed RecipientException
                        statusCode = recExc.InnerExceptions[recipient].StatusCode;

                        if ((statusCode == System.Net.Mail.SmtpStatusCode.MailboxBusy) || (statusCode == System.Net.Mail.SmtpStatusCode.MailboxUnavailable))
                        {
                            //Log this to event log: recExc.InnerExceptions[recipient].FailedRecipient
                            System.Threading.Thread.Sleep(5000);
                            smtp.Send(mail);
                        }
                        else
                        {
                            //Log error to event log.
                            //recExc.InnerExceptions[recipient].StatusCode or use statusCode
                        }
                    }
                }
                //General SMTP execptions
                catch (System.Net.Mail.SmtpException)
                {
                    System.Windows.Forms.MessageBox.Show("Pesan gagal dikirim!", "Gagal", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);//exception handling nya di sini nih! kalo pesan gagal dikirim akan muncul message box peringatan
                 
                }
                catch (Exception)
                {
                    //Log error to event log.
                }

agak panjang yah..hehe... utk lebih jelasnya bisa kunjungi link yang aku kasih di atas...sekali lagi, exception handling ini sangat penting! karena kalo email kita gak kekirim, dan gak ada exception handlingnya, bakal muncul error "wait operation timed out!" nah jelek banget kan...hehe maka dari itu, butuh banget ni exception handling biar si user gak bingung karena programnya error.

sekian dari saya, semoga bermanfaaat :))

Rabu, 10 April 2013

Programming Tutorial : Parsing Parameter antar halaman/page web ASP C# dengan QUERYSTRING (Parameter parsing between pages in ASP C# Web using QUERYSTRING)

tutorial kali ini akan membahas bagaimana caranya parsing atau melempar atau mentransfer sebuah parameter atau variabel atau nilai dari sebuah halaman/page satu ke page lain. kalo pada windows application/desktop application kan tinggal pake inisialisasi variabel : public static string blabla... gitu... dan tinggal dipanggil lagi di halaman lainnya. kalo di web kan tidak bisa semudah itu. nah, untuk keperluan tsb kita menggunakan QUERYSTRING. querystring dapat digunakan untuk parsing ID dan string. ini sangat bermanfaat bila halaman web kita membutuhkan informasi ID dari halaman web yang lain.

misalkan saya ingin parsing ID dari halaman1.aspx ke halaman2.aspx
-code dibawah terletak di bagian halaman1.aspx dan terdapat di dalam tag script (dibagian atas)


<script runat="server">
    protected void DataListAlumni_EditCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName == "Edit")
        {
            Label lbID = (Label)e.Item.FindControl("lblIDAlumni"); // ini dia proses dapet ID dari label lblIDAlumni dan dimasukkan dalam variabel lblID
            string ID;
            ID = lbID.Text;//lblID diconvert jd string
            Response.Redirect("halaman2.aspx?id=" + ID);//ID diparsing ke halaman2.aspx
        }
    }
</script>

-pada halaman2.aspx.cs kita menangkap variabel yang diparsing tsb dengan code :

protected void Page_Load(object sender, EventArgs e)
    {
     string queryStringID = Request.QueryString["id"];//menangkap ID yg diparsing dr halaman1.aspx
        id_alumni = int.Parse(queryStringID);
    }



code yg saya bold adalah inti dari proses "lempar-tangkap" tsb. hehe... mudah bukan? silakan dicopas...dan jangan lupa tinggalkan komentar Anda :) semoga bermanfaat!

sekian dari saya,

Programming Tutorial : Mengirim Email dari Web ASP C# (Sending Email from ASP C# Website)

sudah lama sekali saya tidak blogging... kali ini saya akan blogging tentang sesuatu yg berbobot *ehem*. Pengerjaan skripsi saya semester ini membawa banyak ilham dan pengetahuan baru yang sayang bila tidak dishare... semoga tutorial saya kali ini bisa bermanfaat :) check this out!!

Dalam pembuatan web adakalanya membutuhkan fitur pengiriman email kepada member atau anggota. entah untuk konfirmasi pendaftaran, atau bagi-bagi newsletter atau berita, dan lain-lain. dalam tutorial ini saya hanya akan membahas pengiriman email dari web asp yang menggunakan bahasa pemrograman C# dan dikirim dengan email dan smtp gmail.

berikut cuplikan codenya :

-sebelumnya tambahin code berikut library yg letaknya di bagian atas :
using System.Net.Mail;

-taruh code di bawah pada event yang membuat email ini dikirim, bisa button clicked, atau event yang lain.

MailMessage mail = new MailMessage();
mail.To.Add(emailtujuan);
//mail.To.Add("Another Email ID where you wanna send same email");
mail.From = new MailAddress(emailpengirim);
mail.Subject = "isiin subjek pesan kamu";
string Body = @"isiin isi pesan kamu (ingat formatnya html!) utk ganti baris gunakan <br> karena kalo gak, bakal jadi 1 baris tanpa putus";
mail.Body = Body;
mail.IsBodyHtml = true;SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("emailpengirim", "passwordemail");
smtp.EnableSsl = true;
smtp.Send(mail);

gitu aja codenya? Yap! tidak begitu banyak kan! code di atas works well for me...
silakan dicopas dan dicoba :)

sekian dari saya,

who follows me