Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

Randevu Rehberlik sistemi Okulumuza yapmaya çalışıyorum yapamadım

Okulumuza Randevu sistemi yapmaya çaşıyorum.

Her öğretmenin rehberlik Günleri farklı Rehberlik tablosundan Öğretmenleri Dropdownlistle çekiyorum.

Standart Calendar kontrolü kullanıyorum. Calendar kontrolündeki değeri TextBox'a yazdırıyorum,  oardan da veritabanına kayıt ettiriyorum.

Yapamadığım ve yapmak istediğimse öğretmenin sadece müsait tarihleri nasıl seçtirebilirim?

OgretmenId ye göre Rehberlik Tablosunda RehberlikTarihi günleri veri tabanında var. Basit birşey olsada olur kırmızı yeşil gibi mesela rehberlik saati olmadığı günler kırmızı seçilemesin gibi buraya kadar yapabildim kaldım. Bir türlü beceremedim.

aspx.cs kodum
...public partial class OgrenciPaneli_RandevuEkle : System.Web.UI.Page
{
    Fonksiyon system = new Fonksiyon();
    string OgretmenId = "";
    public string GeciciSayfaId = Degerler.Sayim();

    protected UyeKontrolSonucu UyeBilgileri;
    protected void Page_Load(object sender, EventArgs e)
    {
        UyeBilgileri = UyeOturumSinifi.getOturumKontrol();

        if (UyeBilgileri.OturumActi == false)
        {
            Response.Redirect("Login.aspx", true);
        }
        else
        {
            lblAdmin.Text = UyeBilgileri.Detaylari.AdiSoyAdi;
        }

        OgretmenId = Request.QueryString["OgretmenId"];
        

        if (HiddenField1.Value.Length < 1)
        {
            GeciciSayfaId = Degerler.Sayim();
            HiddenField1.Value = GeciciSayfaId;
        }

        if (Page.IsPostBack == false)
        {
            KategoriCek();
            dropOgretmenId.SelectedValue = OgretmenId;
        }
    }
    protected void btnEkle_Click(object sender, EventArgs e)
    {
 


        int HeyetId;
        HeyetId = 0;

  
        string id;
        using (SqlHelper helper = new SqlHelper())
        {




            SqlParameter parmOut = new SqlParameter("@new_identity", SqlDbType.Int);
            parmOut.Direction = ParameterDirection.Output;

            id = helper.CommandText("sp_RandevuEkle")
                       .CommandType(CommandType.StoredProcedure)
                       .Parameters(param => param

                                   .Add("UyeId", Session["UyeId"].ToString())
                                   .Add("HeyetId", HeyetId)
                                   .Add("RandevuTarihi", TextBox1.Text)
                                   .Add("OgretmenId", dropOgretmenId.SelectedValue)

                                   .Add(parmOut))
                         .ExecuteScalar().ToString();

            

        }

        Response.Write("<script>alert('Tebrikler!!! Randevu isteğiniz başarı ile ulaşmıştır. ') ; window.location.href='RandevuEkle.aspx'</script>");
    }

    void KategoriCek()
    {
        DataTable dtSayfaKategoriler = system.GetDataTable("Select * from BilOgretmenler");

        dropOgretmenId.Items.Add("Seçiniz");
        dropOgretmenId.Items[0].Value = "";

        int sira = 1;
        for (int i = 0; i < dtSayfaKategoriler.Rows.Count; i++)
        {
            DataRow drSayfaKategori = dtSayfaKategoriler.Rows[i];
            dropOgretmenId.Items.Add(drSayfaKategori["AdiSoyadi"].ToString() + " " + drSayfaKategori["UyeSoyadi"].ToString());
            dropOgretmenId.Items[sira].Value = drSayfaKategori["OgretmenId"].ToString();
            sira++;
        }
    }
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
    }
}
html yani .aspx kodum
...    <%=HiddenField1.Value %>
            <asp:Button ID="Button1" runat="server" Text="Değiştir" />
            <asp:HiddenField ID="HiddenField1" runat="server"  />

                    <asp:Label ID="lblAdmin" runat="server" Text="Label"></asp:Label>
<asp:DropDownList class="form-control" ID="dropOgretmenId" runat="server"></asp:DropDownList>
</br>
<asp:TextBox ID="TextBox1" runat="server" CssClass="form-control"></asp:TextBox> 
<asp:Calendar ID="Calendar1" runat="server" SelectionMode="DayWeek" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
</br>
<asp:Button ID="btnEkle" runat="server" onclick="btnEkle_Click" Text="RANDEVU İSTE" CssClass="btn btn-inline btn-danger-outline" />

1 Cevap

0
Calendar kontrolünün DayRender diye bir olayı var. Bu olay takvimin her bir hücresi boyanmadan önce çağırılıyor. Burada her gün için bir renk belirleyebilirsin.

    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        
    }
Buradaki e parametresinin Cell ve Day özellikleri var. Cell gün hücresini veriyor. Buna BackColor ile zemin rengi atanabilir. Day ise ilgili hücrenin Date ve IsSelectable gibi görsel olmayan bilgilerini veriyor.

Alttaki gibi bir sorgu içeren bir stok prosedür tanımla.

SELECT RandevuTarihi FROM RandevuTarihleriTablosu WHERE UyeId = @UyeId

Öğretmen seçilip, sayfa post back olduğunda Page_Init olayında, bu sorguyla çektiğin kayıtları bir tarih listesine yükle. Örneğin:

List<DateTime> tarihler;

void Page_Init(Object o, EventArgs e) { if (Page.IsPostBack) { SqlDaraReader rdr = SqlHelper.ExecuteReader(.....); tarihler = new List<DateTime>(); while (rdr.Read()) { tarihler.add(Convert.ToDateTime(rdr["RandevuTarihi"])); } } }

Son olarak DayRender olayını aşağıdaki gibi bir şey yap.

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
	if (tarihler.IndexOf(e.Date) > -1)
	{
		e.Cell.BackColor = System.Drawing.Color.Red;
		e.Day.IsSelectable = false;
	}
}

Kodların hiç biri test edilmedi. Artık ufak tefek hatalar olursa düzeltirsin.


Cevaplayan: 29.06.17 21:21
cevapsitesi
102,034p 15ü
Hocam çok teşekkür ederim zahmet verdiniz
lakin c# de çok tecrubesizim beceremedim. rica etsem yukarıdaki kodlarıma ekleyebilirmisiniz →  aeyman 30.06.17 10:58