using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
public partial class AnketGoster : System.Web.UI.Page
{
OleDbConnection cnn = new OleDbConnection("Provider=microsoft.jet.oledb.4.0; data source=" + HttpContext.Current.Server.MapPath("~/App_Data/anket.mdb") + "");
public int toplamOy=0;//toplan değişkenimiz public tanımlıyoruz
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AnketGetir();//sayfa ilk yüklendiğinde anketi çaığırıyoruz
}
}
private void AnketGetir()
{
int anket_id=19;//ben manuel olarak anetin soru nosunu veridm istenirse DB den alınabilir ...
//sql kodumuz anket ve cevap tabloalrınından veirleri getiriyor.
string sql = "SELECT AnketCevap.AnketID, AnketSoru.Soru, AnketCevap.CevapID, AnketCevap.Hit,AnketCevap.Cevap " +
"FROM AnketCevap INNER JOIN AnketSoru ON AnketCevap.AnketID = AnketSoru.AnketID where AnketSoru.AnketID = "+anket_id+"";
OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);
DataTable dt = new DataTable("anket");
da.Fill(dt);
lblAnketSoru.Text = dt.Rows[0]["Soru"].ToString();//anketin sorusunu label e yazdırdık.
ViewState["AnketID"] = dt.Rows[0]["AnketID"].ToString();//Anketin değerini ViewStatede tuttum ben.
rdCevaplar.DataSource = dt.DefaultView;//anket sorularını radiobutonliste doldurduk.
rdCevaplar.DataTextField = "Cevap";
rdCevaplar.DataValueField = "CevapID";
rdCevaplar.DataBind();
}
protected void btnOyVer_Click(object sender, EventArgs e)
{
if (Session["kullanma"] != null)
{
lbldurum.Text = "Daha önce oy kullanıdın !";
return;
}
int secim =Convert.ToInt32(rdCevaplar.SelectedValue);
cnn.Open();
//sql kod ile seçilenin takımın Hit değerini 1 artırıyoruz
OleDbCommand cmd = new OleDbCommand("UPDATE AnketCevap SET Hit=Hit+1 Where CevapID="+secim+" and AnketID = " + Convert.ToInt32(ViewState["AnketID"]) + "", cnn);
cmd.ExecuteNonQuery();
cnn.Close();
Session["kullanma"] = "evet";
lbldurum.Text = "Teşekkürler...";
Sonuclar();
}
protected void btnsonucGoster_Click(object sender, EventArgs e)
{
Sonuclar();
}
private void Sonuclar()
{
PhSonuclar.Visible = true;
int anket_id = 19;//ben manuel olarak anetin soru nosunu veridm istenirse DB den alınabilir ...
//sql kodumuz anket ve cevap tabloalrınından veirleri getiriyor.
cnn.Open();
OleDbCommand cmd = new OleDbCommand("Select SUM(Hit) FROM AnketCevap where AnketID=" + anket_id + "", cnn);
ltToplam.Text =(cmd.ExecuteScalar()).ToString();//toplam oy u alıyoruz
toplamOy =Convert.ToInt32( ltToplam.Text);
cmd.Dispose();
string sql = "SELECT AnketCevap.AnketID, AnketSoru.Soru, AnketCevap.CevapID, AnketCevap.Hit,AnketCevap.Cevap " +
"FROM AnketCevap INNER JOIN AnketSoru ON AnketCevap.AnketID = AnketSoru.AnketID where AnketSoru.AnketID = " + anket_id + " order by AnketCevap.Hit desc";
OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);
DataTable dt = new DataTable("anket");
da.Fill(dt);
lblAnketSoru.Text = dt.Rows[0]["Soru"].ToString();//anketin sorusunu label e yazdırdık.
ViewState["AnketID"] = dt.Rows[0]["AnketID"].ToString();//Anketin değerini ViewStatede tuttum ben.
RpAnketSonuclari.DataSource = dt.DefaultView;//anket sorularını radiobutonliste doldurduk.
RpAnketSonuclari.DataBind();
}
protected void RpAnketSonuclari_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// burada her seçeneğin toplam oylara olan oaranı gösterip ekrana oy oranını ve bu oranla oranla orantılı
//olarak bar resmimizi genişiliğini değiştiriyoruz
double hit =Convert.ToDouble(DataBinder.Eval(e.Item.DataItem, "Hit"));// o andaki kaydın hit değeri
Label lOran = (Label)e.Item.FindControl("lblOran");//oranı yazdıracığım label i alıyoruz
double oran =Convert.ToDouble((hit * 100) / toplamOy ); // oran hesaplatıyoruz.
lOran.Text =" % "+ Convert.ToString(Math.Round(oran,1));//oranı label e yazdırıyoruz
Image bar = (Image)e.Item.FindControl("imgBar");//resim nesnemizinde bir örneğini alıyoruz
bar.Height =10;//resimin yüksekliğini veriyoruz
try
{
bar.Width = Convert.ToInt32(oran);// resmin genişkiği olarak oranı veriyoruz
}
catch
{
bar.Width = 0;
}
}
}
Görüşmek üzere .