åbne panel med et a tag
hej eksperter jeg ved ikke lige hvordan den skal formuleres men jeg har en profil side og på selve siden har jeg en menu med 3 links i hvor jeg kan redigere min profil,et link hvor jeg kan ændre brugernavn og email og et link hvor jeg kan ændre adgangskode og et link hvor jeg kan skrive en beskrivelse af mig selv, og for hvert link der åbnes et panel med det textboxe der skal bruges, men når et link er aktiv skal man kunne se det og der har jeg prøvet at tilføje css class='active' til den men når det er et panel man gør det med er det hvordan gør man så for jeg kan ikke få det til at virke, jeg har prøvet at hente navs fra en database og så virker det men så åbner mine paneler ikke og hvis jeg gør det uden at bruge databasen til min navs så virker panelerne men ikke css classen, hvad skal jeg gøre for at det virker på den ene eller anden måde??
tak fordi i gider kikke på det :D
mine servercontroller og html opmærkning
<%@ Page Title="" Language="C#" MasterPageFile="~/admin/MasterPage.master" AutoEventWireup="true" CodeFile="profil.aspx.cs" Inherits="admin_profil" %>
<%-- namespace til ckeeditor serverkontrollen --%>
<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="container-fluid">
<h3 class="page-header">
<asp:Literal
ID="litProfil"
runat="server" />
</h3>
<%-- Panel med brugernavn og email --%>
<asp:Panel ID="pnlBrugerOplysninger" DefaultButton="btnGemOplysninger" runat="server">
<div class="row">
<div class="col-md-2">
<asp:Panel ID="pnlImg" CssClass="pnl-img" DefaultButton="btnImg" runat="server">
<asp:Literal
ID="litHentProfilImg"
runat="server" />
<br />
<asp:Label
ID="lbRoterImg"
runat="server"
Text="Roter billede" />
<br />
<%-- mod uret --%>
<asp:ImageButton
ID="ibRoterImgModUret"
ImageUrl="../img/roter-img.png"
Width="25"
ToolTip="Roter billede mod uret"
ValidationGroup="roterImg"
OnClick="ibRoterImgModUret_Click"
runat="server" />
<%-- med uret --%>
<asp:ImageButton
ID="ibRoterImgMedUret"
ImageUrl="../img/roter-img-med-uret.png"
Width="25"
ToolTip="Roter billede med uret"
ValidationGroup="roterImg"
OnClick="ibRoterImgMedUret_Click"
runat="server" />
<br />
<br />
<asp:FileUpload
ID="fuImg"
AllowMultiple="true"
ClientIDMode="Static"
runat="server" />
<br />
<%-- thumbnail billede af det som skal oploades --%>
<output></output>
<br />
<asp:Button
ID="btnImg"
ValidationGroup="img"
OnClick="btnImg_Click"
CssClass="btn btn-default"
runat="server"
Text="Gem" />
<br />
<asp:Literal
ID="litImgMsg"
runat="server" />
</asp:Panel>
<%-- Roter billede på plads --%>
<div class="=btn-margin-bottom-20">
<%-- literal til roter billede --%>
<asp:Literal
ID="litRoterImg"
runat="server" />
</div>
</div>
<div class="col-sm-8">
<%-- Options link på profil siden --%>
<div class="col-sm-12">
<ul class="nav nav-tabs">
<asp:Literal ID="litMenu" runat="server"/>
<li role="presentation" runat="server" >
<%-- <a href="profil.aspx" onclick="pnlBrugernavnOgEmail.visible=true" runat="server" id="test">test</a>--%>
<asp:LinkButton ID="lbPersonligOplysninger" class="active" OnClick="lbPersonligOplysninger_Click" runat="server">Ret dit navn og Email</asp:LinkButton>
</li>
<li role="presentation">
<asp:LinkButton ID="lbAdgangskode" OnClick="lbAdgangskode_Click" runat="server">Skift adgangskode</asp:LinkButton>
</li>
<li role="presentation">
<asp:LinkButton id="Beskeder" OnClick="Beskeder_Click" runat="server">Om mig</asp:LinkButton>
</li>
</ul>
</div>
<%-- option link slut --%>
<%-- panelet bruger oplysninger start --%>
<asp:Panel ID="pnlBrugernavnOgEmail" runat="server">
<div class="col-sm-5">
<h4 class="page-header">Bruger oplysninger</h4>
<%-- Rediger bruger --%>
<asp:Label
ID="lblNavn"
AssociatedControlID="txtNavn"
runat="server"
Text="Brugernavn" />
<br />
<asp:TextBox
ID="txtNavn"
ValidationGroup="Oplysninger"
CssClass="form-control"
runat="server" />
<asp:RequiredFieldValidator
ID="rfvNavn"
ControlToValidate="txtNavn"
ValidationGroup="Oplysninger"
Display="Dynamic"
CssClass="error"
runat="server"
ErrorMessage="Du mangler at udfylde feltet" />
<br />
<asp:Label
ID="lblEmail"
AssociatedControlID="txtemail"
runat="server"
Text="E-mail" />
<br />
<asp:TextBox
ID="txtemail"
ValidationGroup="Oplysninger"
CssClass="form-control"
runat="server" />
<asp:RequiredFieldValidator
ID="rfvEmail"
ControlToValidate="txtemail"
ValidationGroup="Oplysninger"
Display="Dynamic"
CssClass="error"
runat="server"
ErrorMessage="Du mangler at udfylde feltet" />
<br />
<asp:Button
ID="btnGemOplysninger"
OnClick="btnGemOplysninger_Click"
ValidationGroup="Oplysninger"
CssClass="btn btn-default"
runat="server"
Text="Gem" />
<br />
<asp:Literal
ID="litBesked"
runat="server" />
</div>
</asp:Panel>
<%-- panelet bruger oplysninger slut --%>
<%-- panelet adgangskode start --%>
<asp:Panel ID="pnlSkiftKode" DefaultButton="btnGem" runat="server">
<div class="col-sm-5">
<h4 class="page-header">Skift adgangskode</h4>
<%-- Gammel kode --%>
<asp:Label
ID="LlblGammelKode"
AssociatedControlID="txtGammelKode"
runat="server"
Text="Indtast din gamle adgangskode" />
<br />
<asp:TextBox
ID="txtGammelKode"
ValidationGroup="gem-ny-kode"
CssClass="form-control"
runat="server" />
<asp:RequiredFieldValidator
ID="rfvGammelKode"
ControlToValidate="txtGammelKode"
ValidationGroup="gem-ny-kode"
Display="Dynamic"
CssClass="error"
runat="server"
ErrorMessage="Du mangler at udfylde feltet" />
<br />
<asp:Literal
ID="litGammelKode"
runat="server" />
<br />
<%-- Indtast din nye adgangskode --%>
<asp:Label
ID="lblKode"
AssociatedControlID="txtKode"
runat="server"
Text="Intast din nye adgangskode" />
<br />
<asp:TextBox
ID="txtKode"
ValidationGroup="gem-ny-kode"
CssClass="form-control"
runat="server" />
<asp:RequiredFieldValidator
ID="rfvKode"
ControlToValidate="txtKode"
ValidationGroup="gem-ny-kode"
Display="Dynamic"
CssClass="error"
runat="server"
ErrorMessage="Du mangler at udfylde feltet" />
<br />
<asp:Label
ID="lblGentagKode"
AssociatedControlID="txtGentagKode"
runat="server"
Text="Gentag din nye adgangskode" />
<br />
<asp:TextBox
ID="txtGentagKode"
ValidationGroup="gem-ny-kode"
CssClass="form-control"
runat="server" />
<asp:RequiredFieldValidator
ID="rfvGentagKode"
ControlToValidate="txtGentagKode"
ValidationGroup="gem-ny-kode"
Display="Dynamic"
CssClass="error"
runat="server"
ErrorMessage="Du mangler at udfylde feltet" />
<asp:CompareValidator
ID="cvKoder"
CssClass="error"
Display="Dynamic"
ValidationGroup="gem-ny-kode"
ControlToCompare="txtKode"
ControlToValidate="txtGentagKode"
runat="server"
ErrorMessage="Koden er ikke ens" />
<br />
<asp:Button
ID="btnGem"
CssClass="btn btn-default"
ValidationGroup="gem-ny-kode"
OnClick="btnGem_Click"
runat="server"
Text="Gem" />
<br />
<asp:Literal
ID="litRedigerProfil"
runat="server" />
</div>
</asp:Panel>
<%-- panelet adgangskode slut --%>
<%-- panelet beskrivelse start --%>
<asp:Panel ID="pnlBeskrivelse" runat="server">
<div class="col-sm-12">
<h4 class="page-header">Beskrivelse</h4>
<CKEditor:CKEditorControl
ID="CKEBeskrivelse"
BasePath="/ckeditor/"
FilebrowserBrowseUrl="../Filemanager-0.8/index.html"
ValidationGroup="bokse"
runat="server">
</CKEditor:CKEditorControl>
<br />
<asp:Button ID="btnGemOmMig" OnClick="btnGemOmMig_Click" CssClass="btn btn-danger" runat="server" Text="Gem" />
</div>
</asp:Panel>
<%-- panelet beskrivelse slut --%>
</div>
</div>
</asp:Panel>
</div>
</asp:Content>
Min codebehind:
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class admin_profil : System.Web.UI.Page
{
brugereFac objProfil = new brugereFac();
imgFac objImg = new imgFac();
billedeRotationFac objRoterImg = new billedeRotationFac();
beskaerimgFac objBillede = new beskaerimgFac();
profilnavFac objProfilnav = new profilnavFac();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//skjul alle paneler fra start
pnlBrugernavnOgEmail.Visible = true;
pnlSkiftKode.Visible = false;
pnlBeskrivelse.Visible = false;
//Her tilføjes der CSS class til li tagsene
//Ram det id som li tag har
string vistSide = Path.GetFileName(Request.PhysicalPath);
if (vistSide == "Default.aspx")
{
lbPersonligOplysninger.Attributes.Add("class", "active");
}
//MENU
DataTable dt_menu = objProfilnav.HentNav();
foreach (DataRow dr_menu in dt_menu.Rows)
{
string classNavn = "";
//hvis der er noget i querystringen så set class active på
if (!string.IsNullOrEmpty(Request.QueryString["sideID"]))
{
if (Convert.ToInt32(dr_menu["fldId"].ToString()) == Convert.ToInt32(Request.QueryString["sideID"]))
{
classNavn = "active";
}
}
//ClassNavn bliver sat på hvis menuen er aktiv
litMenu.Text += "<li class=" + classNavn + " role='presentation'>";
litMenu.Text += "<a href='?sideID=" + dr_menu["fldId"] + "'>" + dr_menu["fldNavn"] + "</a>";
litMenu.Text += "</li>";
}
if (Session["brugernavn"] != null)
{
//Så skal brugeren have en velkomst besked...
litProfil.Text = "Velkommen " + Session["brugernavn"].ToString() + " Her kan du rediger din profil";
objProfil._brugernavn = Session["brugernavn"].ToString();
DataRow drProfil = objProfil.HentBruger();
//Hent profil billede og vis det på skærmen.
//brugerens id skal med til proberty
Session["id"] = drProfil["fldId"].ToString();
txtNavn.Text = drProfil["fldBrugernavn"].ToString();
txtemail.Text = drProfil["fldEmail"].ToString();
//hent profil billede
objImg._id = Convert.ToInt32(drProfil["fldId"]);
DataTable dt_hentProfilImg = objImg.HentProfilImg();
foreach (DataRow dr_Profilimg in dt_hentProfilImg.Rows)
{
if (!string.IsNullOrEmpty(drProfil["fldImg"].ToString()))
{
litHentProfilImg.Text += "<img src='/img/profil/" + dr_Profilimg["fldImg"].ToString() + "' class='img-responsive billede-ramme' />";
}
else
{
litHentProfilImg.Text += "<img src='/img/profil/default-img/ingen-profil-billede.png' class='img-responsive' />";
//fjern rotations knapperne når et default billede vises
lbRoterImg.Visible = false;
ibRoterImgMedUret.Visible = false;
ibRoterImgModUret.Visible = false;
}
}
}
}
}
/// <summary>
/// Gem kode
/// </summary>
/// <param name="sender">Gem den nye adgangskode</param>
/// <param name="e"></param>
protected void btnGem_Click(object sender, EventArgs e)
{
//tjekker om koden passer inden jeg laver den nye kode
bool tjekLogin = objProfil.login(Session["brugernavn"].ToString(), txtGammelKode.Text);
if (tjekLogin)
{
//Hvis koden passer med den i databasen så opret en ny adgangskode
krypteringFac objKryptering = new krypteringFac();
//opret en variabel til salt og hash krypteringen.
string salt = objKryptering.GetRandomSalt();
string HashedPassword = objKryptering.HashKode(txtKode.Text, salt);
//Gem så krypteringen af koden både salt og selve adgangskoden som bliver hashet
objProfil._id = Convert.ToInt32(Session["id"].ToString());
objProfil.OpretNyKode(HashedPassword, salt);
Response.AddHeader("REFRESH", "3;URL=" + Request.RawUrl);
}
else
{
//hvis koden ikke passer med den i databasen så opret ikke en kode
litGammelKode.Text = "<p class='error'>Koden passer ikke</p>";
}
}
// Gem oplysninger om brugeren
protected void btnGemOplysninger_Click(object sender, EventArgs e)
{
//Tjek om der er fyldt noget i tekst felterne
if (!string.IsNullOrEmpty(txtNavn.Text) || !string.IsNullOrEmpty(txtemail.Text))
{
litBesked.Text = "";
objProfil._brugernavn = txtNavn.Text;
objProfil._email = txtemail.Text;
Session["brugernavn"] = txtNavn.Text;
//lav en session til ["fldId"] - tilføj den til proberty _id.
objProfil._id = Convert.ToInt32(Session["id"].ToString());
objProfil.OpdaterBrugernavnOgEmail();
Response.Redirect(Request.RawUrl);
}
else
{
litBesked.Text += "<p class='error'>Du skal udfylde alle felterne</p>";
}
}
protected void btnImg_Click(object sender, EventArgs e)
{
//BILLEDE OPLOAD
string guid = Guid.NewGuid().ToString();
//brugerens id skal med til proberty
objImg._id = Convert.ToInt32(Session["id"]);
DataTable Dt_img = objImg.HentProfilImg();
//4) Put nuværende imagenavn i en variabel - så det efterfølgene kan overskrives med noget nyt - hvis admin har puttet nyt image i imageuploader...
string _billedenavn = Dt_img.Rows[0]["fldImg"].ToString();//Det nuværende imagenavn i databasen...
if (fuImg.HasFile)
{
string extension = System.IO.Path.GetExtension(fuImg.FileName.ToLower());
if (extension == ".jpg" || extension == ".png" || extension == ".JPG" || extension == ".jpeg" || extension == ".svg" || extension == ".JPEG")
{
if (File.Exists(Server.MapPath(@"~\\/img/profil/" + Dt_img.Rows[0]["fldImg"])))
{
//Den her sletter billedet fra mappen på serveren
File.Delete(Server.MapPath(@"~\\/img/profil/" + Dt_img.Rows[0]["fldImg"]));
}
//3)Her laver jeg det nye fil navn og gemmer det i en variabel
string billedenavn = guid + fuImg.FileName;
//4)Her gemmer/uploader jeg filen med nyt navn i IMG mappen...
//fuImg.SaveAs(Request.PhysicalApplicationPath + @"/img/profil/" + billedenavn);
//skaler billedet
string tempFilSti = Server.MapPath("/img/temp/" + billedenavn);
string NyFilSti = Server.MapPath("/img/profil/" + billedenavn);
//gem billedet
fuImg.SaveAs(tempFilSti);
objBillede.billedeResize(tempFilSti, NyFilSti, 1024, 768);
File.Delete(tempFilSti);
//5)gem nu hele postyret i databasen - dvs bla det nye billede navn...
objImg._img = billedenavn;
objImg._id = Convert.ToInt32(Session["id"].ToString());
objImg.opdaterImg();
//6)Og så kan vi trygt reloade siden
Response.Redirect("profil.aspx");
}
else
{
//her er hvad den vil sige hvis filen ikke indeholde et billede format
litImgMsg.Text = "<p class='error'>Forkert filformat</p>";
}
}
else
{
//en fejl hvis brugeren ikke har valg nogen fil til opload
litImgMsg.Text = "<br /><span class='error'>Vælg venligst en fil</span>";
}
}
//Roter billede med uret
protected void ibRoterImgMedUret_Click(object sender, ImageClickEventArgs e)
{
//hent profil billede
objProfil._brugernavn = Session["brugernavn"].ToString();
DataRow drProfil = objProfil.HentBruger();
if (!string.IsNullOrEmpty(drProfil["fldImg"].ToString()))
{
//Hent profil billede der skal roteres.
//brugerens id skal med til proberty.
Session["id"] = drProfil["fldId"].ToString();
objRoterImg.billedeRotationMedUret(Server.MapPath("/img/profil/" + drProfil["fldImg"] + ""));
//Udskriv billedet igen efter rotationen
litRoterImg.Text = "<img src='/img/profil/" + drProfil["fldImg"] + "?" + DateTime.Now.ToString("hhmmssfff") + "/>";
Response.Redirect("profil.aspx");
}
else
{
//Hent profil billede der skal roteres. hvis profilbilede felt er tomt
//brugerens id skal med til proberty.
Session["id"] = drProfil["fldId"].ToString();
objRoterImg.billedeRotationMedUret(Server.MapPath("/img src='/img/profil/default-img/ingen-profil-billede.png'"));
//Udskriv billedet igen efter rotationen
litRoterImg.Text = "<img src='/img/profil/default-img/ingen-profil-billede.png'/>";
Response.Redirect("profil.aspx");
}
}
//Roter billede imod uret
protected void ibRoterImgModUret_Click(object sender, ImageClickEventArgs e)
{
//hent profil billede
objProfil._brugernavn = Session["brugernavn"].ToString();
DataRow drProfil = objProfil.HentBruger();
if (!string.IsNullOrEmpty(drProfil["fldImg"].ToString()))
{
//Hent profil billede der skal roteres.
//brugerens id skal med til proberty.
Session["id"] = drProfil["fldId"].ToString();
objRoterImg.billedeRotationModUret(Server.MapPath("/img/profil/" + drProfil["fldImg"] + ""));
//Udskriv billedet igen efter rotationen
litRoterImg.Text = "<img src='/img/profil/" + drProfil["fldImg"] + "?" + DateTime.Now.ToString("hhmmssfff") + "'/>";
Response.Redirect("profil.aspx");
}
else
{
//Hent profil billede der skal roteres. hvis profilbilede felt er tomt
//brugerens id skal med til proberty.
Session["id"] = drProfil["fldId"].ToString();
objRoterImg.billedeRotationModUret(Server.MapPath("/img/profil/default-img/ingen-profil-billede.png' class='img-responsive'"));
//Udskriv billedet igen efter rotationen
litRoterImg.Text = "<img src='/img/profil/default/ingen-profil-billede.png' class='img-responsive'/>";
Response.Redirect("profil.aspx");
}
}
protected void lbPersonligOplysninger_Click(object sender, EventArgs e)
{
pnlBrugernavnOgEmail.Visible = true;
pnlSkiftKode.Visible = false;
pnlBeskrivelse.Visible = false;
}
protected void lbAdgangskode_Click(object sender, EventArgs e)
{
pnlBrugernavnOgEmail.Visible = false;
pnlBeskrivelse.Visible = false;
pnlSkiftKode.Visible = true;
}
protected void Beskeder_Click(object sender, EventArgs e)
{
pnlBrugernavnOgEmail.Visible = false;
pnlBeskrivelse.Visible = true;
pnlSkiftKode.Visible = false;
}
protected void btnGemOmMig_Click(object sender, EventArgs e)
{
}
}