BAĞLANTILARIM

Takip Edin:

0

C#'ta itextSharp ile Html'yi Pdf'ye dönüştürme

Çarşamba, Mayıs 13, 2015 / / ,

Örnekte PDF'i MemoryStream ile hafızada oluşturduktan sonra mail yoluyla gönderdik.
Türkçe karakterleri sorunsuz şekilde oluşturdu.


StringBuilder sb = new StringBuilder();
sb.Append("<table>");
sb.Append("<tr><td><b>Merhaba Türkçe, ÇçĞğİıÖöŞşÜü</b></td></tr>");
sb.Append("</table>");
       
            Document pdfDokuman = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDokuman, memoryStream);
                pdfDokuman.Open();
                StyleSheet stil = new StyleSheet();
                FontFactory.Register("C:\\Windows\\Fonts\\Arial.ttf", "ArialFont");
                stil.LoadTagStyle("body", "face", "ArialFont");
                stil.LoadTagStyle("body", "encoding", "Identity-H");
                stil.LoadTagStyle("body", "size", "8pt");
             
                using (var stringIcerik = new StringReader(sb.ToString()))
                {
                    using (var htmlWorker = new HTMLWorker(pdfDokuman, null, stil))
                    {
                        htmlWorker.Parse(stringIcerik);
                    }
                }
                pdfDokuman.Close();
                byte[] dokuman = memoryStream.ToArray();//oluşan ve gönderilecek doküman
                memoryStream.Close();
                //MailGonder.GmailUzerinden("Mail Başlık", "İçerik", dokuman, gonderilecekEpostaAdresi);
            }

0

Asp.net iç içe Repeater veya iç içe ListView kullanımı

Cuma, Nisan 17, 2015 / / , ,



İç içe listeleme işlemlerinde aşağıdaki yöntem kullanılabilir. Örnekte dıştaki ListView kontrolünde odalar ve odalara ait genel bilgiler listelenirken; içte kullanılan Repeater kontolünde ise oda tipine göre odaların özellikleri dolduruldu.(Balkon, Bahçe, Havuz vs..) 

Aynı işlem Repeater içinde Repeater veya ListView içinde ListView olarak da kullanılabilir.


Tasarım tarafı: kontrollerin yerleşimi

<table class="tabloRezervasyon">
                    <tr>
                        <th style="width: 30%;">Oda</th>
                        <th style="width: 10%; text-align:center;">Maks. Kişi</th>
                        <th style="width: 25%;">Bilgi</th>
                        <th style="width: 15%; text-align:center;">Fiyat</th>
                        <th style="width: 20%;">Rezervasyon</th>
                    </tr>
                    <asp:ListView ID="lvListe" runat="server" OnItemDataBound="lvListe_ItemDataBound">
                        <ItemTemplate>
                            <tr>
                                <td><a href="RezervasyonOdaDetay.aspx?odaTipId=<%#Eval("OdaTipId") %>" class="various" data-fancybox-type="iframe"><%#Eval("Fotograf").ToString()!=String.Empty ? "<img src=\"images/oda/" + Eval("Fotograf") + "\" alt=\"\" class=\"odaFoto\" />" : "<i class=\"fa fa-4x fa-camera odaFotoYok\"></i>" %></a>
                                  <a href="RezervasyonOdaDetay.aspx?odaTipId=<%#Eval("OdaTipId") %>" class="turuncu17 various" data-fancybox-type="iframe"><%#Eval("OdaAd") %></a>
                                    <br />
                                    <br />
                                    <asp:Repeater ID="repeatOzellik" runat="server">
                    <HeaderTemplate><ul class="listeOzellik"></HeaderTemplate>
                    <ItemTemplate>
                        <li><i class="fa fa-circle"></i><span class="siyah14"><%#Eval("OzellikAd") %></span></li>
                    </ItemTemplate>
                    <FooterTemplate></ul></FooterTemplate>
                </asp:Repeater>
                                </td>
                                <td style="text-align:center;"><%#Eval("KisiKapasite") %> Kişi</td>
                                <td><%#Eval("KisaBilgi").ToString().Length>130 ? ""+Eval("KisaBilgi").ToString().Substring(0,130)+"..." : ""+Eval("KisaBilgi")+"" %></td>
                                <td style="text-align:center;"><span class="turuncu17"><%#Eval("Fiyat") %> <%#Eval("ParaTipi") %></span></td>
                                <td>
                                    <asp:LinkButton ID="btnRezervasyonYap" runat="server" CssClass="buton turuncu">Rezervasyon Yap</asp:LinkButton></td>
                            </tr>
                        </ItemTemplate>
                    </asp:ListView>
                </table>



Kod tarafı:


Dıştaki kontrol normal şekilde doldurulur.
İçteki Repeater ise dıştaki kontrolün ItemDataBound olayında aşağıdaki şekilde doldurulur.


        protected void lvListe_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            try
            {
                odaTipId = DataBinder.Eval(e.Item.DataItem, "OdaTipId").ToString(); //Dıştaki kontrolden OdaTipId isimli alanın değerini aldık.
                VeriMsSQL.Islem islem = new VeriMsSQL.Islem();
                DataTable dt = islem.OzellikOdaListe(odaTipId);
                if (dt.Rows.Count > 0)
                {
                    Repeater repeatOdaOzellik = e.Item.FindControl("repeatOzellik") as Repeater;
                    repeatOdaOzellik.DataSource = dt;
                    repeatOdaOzellik.DataBind();

                }
                dt.Dispose();
            }
            catch (Exception)
            {
            }
        }

0

C# ve Asp.net para formatlama

Çarşamba, Mart 18, 2015 / / ,

Virgüllü sayısal ifadelerde virgülden sonra iki basamak gösterir


Asp.net Eval ile kullanımı

<%#Eval("BORC","{0:0.##}") %>


Kod tarafı kullanımı

double borc = 0.150000000000008;
lblToplamBorc.Text = String.Format("{0:0.##}", borc);



Farklı kullanımlar:

double fiyat = 1308.3449183999999;
fiyat.ToString("0.00");
fiyat.ToString("C", CultureInfo.CurrentCulture);
fiyat.ToString("C",CultureInfo.GetCultureInfo("tr-TR"));
fiyat.ToString("N2"); 

0

DataTable'dan Excel'e Aktarım.

Salı, Mart 17, 2015 / / ,


C# Excel'e aktarım aşağıdaki şekilde kullanılabilir. Türkçe karakterler sorunsuz olarak aktarılmaktadır.

DataTable dt = //veri kaynağı
                if (dt.Rows.Count > 0)
                {
                    DataView dv = new DataView(dt);
                    this.EnableViewState = false;
                    Response.Clear();
                    Response.Charset = "utf-8";
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", "inline;filename=talep_rapor.xls");
                    Response.ContentEncoding = System.Text.Encoding.UTF8;
                    Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble());
                 
                    StringBuilder sbIcerik = new StringBuilder();
                    sbIcerik.Append("<table>" +
                    "<tr>" +
                    "<td>Talep No</td>" +
                    "<td>Açılış Tarihi</td>" +
                    "<td>Kullanıcı</td>" +
                    "<td>Başlık</td>" +
                    "<td>Toplam Süre / dk.</td>" +
                    "<td>Toplam Ücret / TL</td>" +
                    "</tr>"
                    );
                    foreach (DataRowView icerikSatir in dv)
                    {
                        sbIcerik.Append("<tr>");
                        sbIcerik.Append("<td>" + icerikSatir["TalepId"].ToString() + "</td>");
                        sbIcerik.Append("<td>" + icerikSatir["AcilisZamani"].ToString() + "</td>");
                        sbIcerik.Append("<td>" + icerikSatir["KullaniciAd"].ToString() + "</td>");
                        sbIcerik.Append("<td>" + icerikSatir["Baslik"].ToString() + "</td>");
                        sbIcerik.Append("<td>" + icerikSatir["ToplamSure"].ToString() + "</td>");
                        sbIcerik.Append("<td>" + icerikSatir["ToplamUcret"].ToString() + "</td>");
                        sbIcerik.Append("</tr>");
                    }
                    sbIcerik.Append("</table>");
                    Response.Write(sbIcerik);
                    Response.End();
                    Response.Flush();
                }
                dt.Dispose();

0

Windows Form uygulamalarında butonun Enter tuşu ile algılanmasını sağlamak.

Perşembe, Aralık 25, 2014 / / , ,


Eğer kullanıcın programa giriş yapacağı ekranda Enter tuşuna bastığında Giriş butonunun tetiklenmesini istiyorsak;
Form ayarlarında bulunan AcceptButton değerine Giriş (btnGiris) butonunu ayarlamak yeterli oluyor.

Ya da kod tarafından yapılmak istenirse formun load olayında

this.AcceptButton = btnGiris;

AcceptButton yöntemi Windows Form uygulamlarında örnekteki gibi durumlar için  uygun.



Not: Asp.net web uygulamalarında ise buna benzer işlemler için kullanıcın giriş yapacağı bölüm; bir Panel kontrolü içine alınıp, panelin DefaultButton özelliğine tetiklenecek butonun adı verilerek yapılabilir.

0

Veritabanındaki tablolar üzerinde kayıt ekleme, güncelleme, silme gibi işlemler yapıldığında Trigger ve SQL Database Mail kullanarak mail göndermek.

Salı, Aralık 23, 2014 / /



Management Studio'da Management klasörü altında Database Mail üzerinde yeni bir mail yapılandırması oluşturulur.

Buradaki bilgilere gönderici mail adresi bilgileri girilir.

Profil name olarak verilen isim, trigger içinde @profile_name = '***' alanında kullanılacak.

İşlem tamamlandıktan sonra mail gönderim yapılandırmasının doğru yapılıp yapılmadığı Database Mail üzerinde sağ click yapılıp Send Test Mail ile kontrol edilebilir.

Daha sonra üzerinde hareket olduğunda bildirilmesini istediğimiz tablo hangisi ise o tablo üzerinde yeni bir trigger oluşturulur.

Bunun için aşağıdaki kodlar kullanılabilir.

USE [VERITABANI_ADI]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TRIGGER_ADI] ON [dbo].[KAYIT_EKLENEN_TABLO]
FOR INSERT --yalnızca eklendiğinde mail gönderecek
AS
      BEGIN
     
          EXEC msdb.dbo.sp_send_dbmail
            @profile_name = '***', --database mail üzerinde oluşturduğumuz mail profil adı
            @recipients = 'tamer@tameryigit.com', --gönderilecek mail adresi
            @body = 'Yeni kayıt eklendi. Onaylamak için http://www.tameryigit.com', --mail içeriği
            @subject = 'Onay bekleyen kayıtlar var.' --mail başlığı        
      END



Not: SQL SERVER 2012 üzerinde test ettim. Sql Agent aktif olmasa da mail gönderimi sorunsuz olarak gerçekleşti.

4

File.Delete ile dosya silmeye çalışırken alınan "İşlem, başka bir işlem tarafından kullanıldığından '.....' dosyasına erişemiyor." hatası ve çözümü

Cumartesi, Kasım 15, 2014 / / , ,

Asp.net web sayfasında açık olan görsel silinmek istendiğinde yukarıdaki hata ile karşılaşılıyorsa.

File.Delete(Server.MapPath("../images/urun/deneme.jpg")); //Klasik dosya silme kodu

aşağıdaki şekilde değiştirilerek kullanılabilir.

FileStream fs = new FileStream(Server.MapPath("../images/urun/deneme.jpg"), FileMode.OpenOrCreate); //Streame al ve daha sonra serbest bırak.
fs.Flush();
fs.Close();
File.Delete(Server.MapPath("../images/urun/deneme.jpg")); //şimdi sil

SON YORUMLAR