BAĞLANTILARIM

Takip Edin:

0

ASP.NET MVC AJAX PARTIAL VIEW YENİLEME REFRESH

Pazar, Ağustos 27, 2017 / / , , , , , ,

Asp.net Mvc'de bir PartialView sayfasını Jquery Ajax kullanarak yenileme. Partial View sayfamızda yenilenmesini istediğimiz bir tablomuz olsun. Bu tablo Jquery Datatable eklentisini kullansın. Gönderdiğimiz filtreye göre tablomuz yenilensin.

Jquery DataTable eklentisi listelenmiş veriler arasında kendisi filtreleme yapabiliyor fakat bu filrelemeyi yüklenmiş veriler üzerinde gerçekleştiriyor. Yani Pasif olanları göster dediğimde kendisine doldurulmuş olan tüm veriler arasından pasif kriterine uyanları listeliyor. Bu durum performans kaybına sebep olduğundan Ajax yenileme tekniğini kullanarak yapılan seçime göre tablonun yeni verilerle dolmasını sağlayacağız.




Partial View'ın çağrılacağı asıl sayfamız..

....
<div id="tabloBolum">
                @Html.Partial("_PartialDataTable")
            </div>
....


_PartialDataTable isimli Partial View saymaızdaki tablo yerleşimi ve ViewBag.TabloVeri ile verilerin gösterimi

....
<table class="m-datatable" id="dataTablo" width="100%">
    <thead>
        <tr>
            <th title="#" data-field="RecordID">
                <label class="m-checkbox m-checkbox--solid m-checkbox--brand cbSecim" style="margin-left:2px;">
                    <input type="checkbox" name="cbSecTumu" id="cbSecTumu">
                    <span></span>
                </label>
            </th>
            <th title="Field #1" data-field="Islem">İşlem</th>
            <th title="Field #2" data-field="Sayfa">Sayfa</th>
            <th title="Field #3" data-field="NodId">NodId</th>
            <th title="Field #4" data-field="SayfaTip">SayfaTip</th>
            <th title="Field #5" data-field="Durum">Durum</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in ViewBag.TabloVeri)
        {
            <tr>
                <td>
                    <label class="m-checkbox m-checkbox--solid m-checkbox--brand">
                        <input type="checkbox" name="cbSecim[]" id="cbSecim[]" value="@item.SayfaId" class="cbSecim @item.SayfaId">
                        <span></span>
                    </label>
                </td>
                <td ..........


_PartialDataTable isimli Partial View sayfamızdaki Ajax işlemini yapacak script bloğu..


<script type="text/javascript">
//seçim yapıldıkça çağrılacak fonksiyonumuz
    function TabloListele() {
        var secilenDurum = $("#m_form_status").val();
        var data = { seciliDurum: secilenDurum };
     
        $.ajax({
            url: '@Url.Action("TabloListe", "Sayfa")',
            type: "POST",
            data: JSON.stringify(data),
            contentType: 'application/json',
            success: function (result) {
                $("#tabloBolum").html(result);
                $("#m_form_status").val(secilenDurum);
            }
        });
    }
</script>



Sayfa Controller içindeki TabloListe isimli Action..

        [HttpPost]
        public PartialViewResult TabloListe(string seciliDurum)
        {
            object durum = 1;
            if (seciliDurum == "Pasif")
            {
                durum = 0;
            }
            else if (seciliDurum=="Tumu")
            {
                durum = null;
            }
            else
            {
                durum = 1;
            }
            var model = Islem.Sayfa.Listele(durum: durum);
            ViewBag.TabloVeri = model;
            return PartialView("_PartialDataTable", ViewBag.TabloVeri);
        }



Gerekli Jquery ve Datatable eklentisi scriptlerinizi ilave etmelisiniz..

0

ASP.NET MVC AJAX LOGIN ÜYE GİRİŞİ

Cumartesi, Ağustos 26, 2017 / / , , , ,

Login işlemini gerçekleştireceğimiz View'ın form bölümü

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "__AjaxAntiForgeryForm" }))
                {
                    @Html.AntiForgeryToken()

                    <!--begin::Body-->
                    <div class="m-login__body">

                        <!--begin::Signin-->
                        <div class="m-login__signin">
                            <div class="m-login__title">
                                <h3>Giriş Yap</h3>
                            </div>

                            <div id="mesaj" class="alert alert-danger alert-dismissible fade show" role="alert" style="display:none;">
                                <button type="button" class="close" data-dismiss="alert" aria-label="Close"></button>
                                <span id="mesajMetin"></span>
                            </div>

                            <div class="form-group m-form__group">
                                <input class="form-control m-input" type="text" placeholder="E-posta" id="kullaniciAd" name="kullaniciAd" autocomplete="off" required>
                            </div>
                            <div class="form-group m-form__group">
                                <input class="form-control m-input m-login__form-input--last" type="password" placeholder="Şifre" id="sifre" name="sifre" required>
                            </div>

                            <!--end::Form-->
                            <!--begin::Action-->
                            <div class="m-login__action">
                                <a href="#" class="m-link">
                                    <span>Şifremi Unuttum</span>
                                </a>
                                <button id="btnGiris" class="btn btn-primary" onclick="return false;">Giriş</button>
                            </div>

                        </div>

                        <!--end::Signin-->
                    </div>
                    <!--end::Body-->

                }



AJAX Bölümü

<script type="text/javascript">

        $("#btnGiris").click(function () {

            var girisDurum = false;
            var girisHata = "";

            var form = $('#__AjaxAntiForgeryForm');
            var token = $('input[name="__RequestVerificationToken"]', form).val();
            var kullaniciAd = $("#kullaniciAd").val();
            var sifre = $("#sifre").val();

            if (kullaniciAd == "" || sifre == "") {

                $("#mesajMetin").text("Lütfen tüm alanları doldurunuz!");
                $("#mesaj").show();
                return;
            }

            $("#mesaj").hide();
            $("#btnGiris").addClass("m-loader m-loader--right m-loader--light");
            $("#btnGiris").attr("disabled", true);

            $.ajax({
                url: "/Login/GirisKontrol",
                type: 'POST',
                data: {
                    __RequestVerificationToken: token,
                    username: kullaniciAd,
                    password: sifre
                },
                success: function (sonuc) {
                    //alert(sonuc.Durum);

                    if (sonuc.Durum == "OK") {

                        girisDurum = true;

                    }
                    else {

                        girisHata = sonuc.Durum;

                    }
                },
                complete: function () {

                    if (girisDurum == true) {

                        //alert("başarılı")
                        window.location.href = "/Profil";

                    } else {

                        //alert(girisHata);

                        if (girisHata == "BULUNAMADI") {

                            $("#mesajMetin").text("Kullanıcı bulunamadı. Bilgilerinizi kontrol ediniz.");
                            $("#mesaj").show();
                            $("#btnGiris").removeClass("m-loader m-loader--right m-loader--light");
                            $("#btnGiris").attr("disabled", false);

                        }
                        else {

                            $("#mesajMetin").text(girisHata);
                            $("#mesaj").show();
                            $("#btnGiris").removeClass("m-loader m-loader--right m-loader--light");
                            $("#btnGiris").attr("disabled", false);

                        }

                    }

                    girisDurum = false;

                }
            });

            return false;

        });
    </script>

Controller Bölümü

[HttpPost]
        [ValidateAntiForgeryToken]
        public JsonResult GirisKontrol(string username, string password)
        {
            try
            {
                System.Threading.Thread.Sleep(100);

                if (ModelState.IsValid)
                {
                    var md5Sifre = MD5Sifrele(password);

                    var veri = Login.GirisYap(username, md5Sifre);

                    if (veri != null)
                    {

                        Session["KULLANICIID"] = veri.KullaniciId.ToString();
                        Session["KULLANICIAD"] = veri.KullaniciAd.ToString();
                        Session["KULLANICIEPOSTA"] = veri.Eposta.ToString();
                        Session["PROFILAD"] = veri.Ad.ToString();
                        Session["PROFILSOYAD"] = veri.Soyad.ToString();
                        Session["PROFIL_AD_SOYAD"] = Session["PROFILAD"] + " " + Session["PROFILSOYAD"];
                        Session["YONETIM_YETKI"] = "1";

                        string ilkHarfAd = ".";
                        string ilkHarfSoyad = ".";

                        if (Session["PROFILAD"].ToString() != String.Empty)
                        {
                            ilkHarfAd = Session["PROFILAD"].ToString().Substring(0, 1);
                        }
                        if (Session["PROFILSOYAD"].ToString() != String.Empty)
                        {
                            ilkHarfSoyad = Session["PROFILSOYAD"].ToString().Substring(0, 1);
                        }

                        string adSoyadIlkHarfler = ilkHarfAd.ToUpper() + ilkHarfSoyad.ToUpper();
                        Session["ADSOYAD_ILK_HARFLER"] = adSoyadIlkHarfler;

                        //ViewBag.Sonuc = "Giriş başarılı!";
                        return Json(new { Durum = "OK" }, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        return Json(new { Durum = "BULUNAMADI" }, JsonRequestBehavior.AllowGet);
                    }
                }

                return Json(new { Durum = "HATA" });
            }
            catch (Exception ex)
            {
                return Json(new { Durum = "HATA ~ " + ex.Message }, JsonRequestBehavior.AllowGet);
            }
        }

0

ASP.NET MVC FILTER KULLANIMI

Çarşamba, Ağustos 16, 2017 / / , , , ,

Filter kullanarak Mvc projelerinde kullanıcı ve session kontrolü yapmak

Projeye Filters adında bir klasör ekleyip, Auth.cs isimli bir class oluşturuyoruz.

Classımızı aşağıdaki şekilde değiştiriyoruz.

public class Auth : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (System.Web.HttpContext.Current.Session["KULLANICIID"] == null)
            {
                filterContext.Result = new RedirectResult("/Login");
            }
        }
    }


Controller içinde kullanıcı kontrolü yapmak istediğimiz Action'ın üzerine [Auth] şeklinde kontrolümüzü gerçekleştiriyoruz. İlgili Controller'ın tamamında bu kontrolü gerçekleştirmek için [Auth], classın üzerine taşınabilir.

Örneğin:

namespace TamerYigitMvc.Controllers
{
    [Auth]
    public class TestController : Controller
    {

Veya aşağıdaki şekilde her Action için ayrı ayrı kullanılabilir.

[Auth]
        public ActionResult Index()
        {
            ......
            return View();
        }

[Auth]
        public ActionResult Ekle()
        {
           ....
            return View();
        } 

0

SQL SERVER'DA JOB (ZAMANLANMIŞ GÖREV) OLUŞTURMA

Perşembe, Ağustos 03, 2017 / /



http://blog.tameryigit.com/2017/08/sql-stored-procedure-ve-cursor-kullanimi.html bağlantıda oluşturduğumuz Stored Procedure'ü, Sql Server'ın Job özelliğini kullanarak günde 1 kez otomatik çalıştırmak istedik.

Bunun için öncelikle Microsoft SQL Server Management Studio'da SQL Server Agent'ı aktif ettik.

Jobs bölümünden New Job diyerek Job tanımlama ekranını doldurduk.



Steps bölümünde yapılacak işleri, Schedules bölümünde ise bu işlerin hangi zamanlarda yapılacağını tanımladık.




Örnekte tanımladığımız Job, her gece saat 01:00'da EXEC TeklifOlustur komutunu yani prosedürümüzü çalıştırıyor.

0

SQL STORED PROCEDURE ve CURSOR KULLANIMI

Perşembe, Ağustos 03, 2017 / /



Aşağıdaki örnekte TeklifOlustur adında bir prosedür oluşturduk.

Prosedürün yapacağı iş, birkaç tablodan UNION ALL ile birleştirilerek alınmış sorgu sonucunu stored procedure içinde tanımlanmış @TABLO adında bir tabloya yazmak.

Daha sonra kursor adıyla tanımlanmış CURSOR vasıtasıyla bu tablo üzerinde satır satır dolaşarak SELECT, SUM gibi çeşitli işlemler yaptıktan sonra bulduğu bilgileri TEKLIF tablosuna eklemek.

USE [BOSFOR_WEB_YONETIM_FIDE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[TeklifOlustur]
AS

DECLARE @ILKTARIH NVARCHAR(100) = GETDATE() --güncel zaman
DECLARE @SONTARIH NVARCHAR(100) = DATEADD(yy,10,GETDATE()) --güncel zamana 10 yıl ekledik
 --procedure içinde kürsörde kullanmak üzere bir tablo tanımlıyoruz
DECLARE @TABLO TABLE
(
 FIRMA NVARCHAR(50),
 SIPARISNO NVARCHAR(50),
 EKIMNO NVARCHAR(50),
 FIDEADI NVARCHAR(250),
 VARYANT NVARCHAR(50),
 SEEDITEMREF NVARCHAR(50),
 TOHUMADI NVARCHAR(250),
 PLANLANANEKIMTARIHI NVARCHAR(50),
 TESLIMTARIHI NVARCHAR(50),
 SIPARISMIKTARI NVARCHAR(50),
 PLNMIKTAR INT,
 EKILENMIKTAR NVARCHAR(50),
 BEKLEYENMIKTAR NVARCHAR(50),
 TEKLIFMIKTARI NVARCHAR(50),
      KALANGUN NVARCHAR(250)
)
INSERT @TABLO
   
SELECT TMP2.*
FROM (
SELECT
TMP.*
,KALANGUN=(SELECT DATEDIFF(day, GETDATE(), PLANLANANEKIMTARIHI))
FROM (
SELECT * FROM FITAP.[dbo].[FF_220_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_230_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_240_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_250_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_260_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_270_TOHUMBILGI](@SONTARIH,@ILKTARIH)
) AS TMP
) AS TMP2
WHERE TOHUMADI IS NOT NULL
AND KALANGUN<=5
ORDER BY PLANLANANEKIMTARIHI

SELECT * FROM @TABLO

--CURSOR BAŞLIYOR
DECLARE @TOHUMAD NVARCHAR(250)
DECLARE @PLANLANANMIKTAR INT

DECLARE kursor CURSOR FOR
--TABLOYU GRUPLANDIRARAK ALDIK
SELECT TOHUMADI FROM @TABLO GROUP BY TOHUMADI
OPEN kursor
FETCH NEXT FROM kursor
INTO @TOHUMAD
WHILE @@FETCH_STATUS = 0
BEGIN

  --Burada TOHUMADI'na göre filtreleme yap ve PLNMIKTAR alanlarındaki veriyi toplayıp @PLANLANANMIKTAR değişkenine at
  --TOHUM ADINA GÖRE BAK
  SELECT @PLANLANANMIKTAR=SUM(PLNMIKTAR) FROM @TABLO WHERE TOHUMADI=@TOHUMAD
 
 --KAYIT EKLE
 INSERT INTO TEKLIF (TohumAd,KayitTarihi,Miktar) VALUES (@TOHUMAD,(SELECT GETDATE()),@PLANLANANMIKTAR)

FETCH NEXT FROM kursor INTO @TOHUMAD
END
CLOSE kursor
DEALLOCATE kursor

Bu prosedür otomatik olarak belirli aralıklarla çalışsın istenirse Sql Server'da Job oluşturulabilir.
http://blog.tameryigit.com/2017/08/sql-serverda-job-zamanlanmis-gorev.html

SON YORUMLAR