WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Kontroll i .Net formulär (https://www.wn.se/forum/showthread.php?t=33398)

Slanter 2008-11-19 15:51

Är nybörjare på .Net och håller just nu på och gör ett anmälningsformulär.
Vissa delar gäller bara om man har kryssat för en viss ruta. Skulle därför vilja att de fälten är "gråade" och inte går att fylla i om man inte kryssat för denna ruta.
Hur löser jag detta? Gärna något kod exempel då jag som sagt är nybörjare på detta.

Använder asp:textboxar och asp:checkboxar

Tack!

allstars 2008-11-19 16:03

testa "disabled" alternativt "readonly".

Några val bör du få upp som är relaterade till detta.

Slanter 2008-11-19 16:06

Men hur ändrar jag statusen från diabled eller readonly till att kunna använda fältet? (mha en checkbox)

Jan Eriksson 2008-11-19 16:26

Lägg till en CheckBox och lägg till AutoPostBack="true".
Lägg till en textBox


I koden skriver du ungefär.



Sub Page_Load(.........

if Checkbox.checked Then
textbox.enabled = true
Else
textbox.enabled = false
End If

End Sub


Eller lite enklare:

textbox.enabled = Checkbox.checked

Daniel.st 2008-11-19 17:04

Enklare att lösa det via JavaScript än att behöva göra en postback.

Jan Eriksson 2008-11-19 17:13

Citat:

Originally posted by Daniel.st@Nov 19 2008, 17:04
Enklare att lösa det via JavaScript än att behöva göra en postback.

Då skulle inte fråga ligga i Serversidans teknologier. :)

Ge Slanter ett kodexempel så blir han säkert glad.

quickhelp 2008-11-19 22:11

Ex:

Kod:

<asp:CheckBox ID="CheckBox1" runat="server" Text="CheckBox1" OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="True"  />
<asp:TextBox ID="Text1" runat="server"></asp:TextBox>
<asp:TextBox ID="Text2" runat="server"></asp:TextBox>
<asp:TextBox ID="Text3" runat="server"></asp:TextBox>

Kod:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
  Text2.ReadOnly = CheckBox1.Checked;
  Text3.ReadOnly = CheckBox1.Checked; 
}


ChristofferP 2008-11-19 23:36

Både .ReadOnly = true och .Enabled = false fungerar men beter sig lite olika vilket kan vara bra att känna till, finns förklarat här: http://stackoverflow.com/questions/174319/

TommyTisen 2008-11-20 22:44

Ett annat exempel där man öppnar upp dom genom javascript direkt:


<asp:CheckBox ID="CheckBox1" runat="server" Text="CheckBox1" Checked="false" onclick="CheckBox1_CheckedChanged(this);" />
<asp:TextBox ID="Text1" runat="server" Enabled="false" Text="Text1"></asp:TextBox>
<asp:TextBox ID="Text2" runat="server" Enabled="false" Text="Text2"></asp:TextBox>
<asp:TextBox ID="Text3" runat="server" Enabled="false" Text="Text3"></asp:TextBox>

<script type="text/javascript">
function CheckBox1_CheckedChanged(obj)
{
if (obj.checked)
{
$get('<%=Text1.ClientID %>').disabled=false;
$get('<%=Text2.ClientID %>').disabled=false;
$get('<%=Text3.ClientID %>').disabled=false;
}
else
{
$get('<%=Text1.ClientID %>').disabled=true;
$get('<%=Text2.ClientID %>').disabled=true;
$get('<%=Text3.ClientID %>').disabled=true;
}
}
</script>

crazzy 2008-11-21 00:07

@TommyTisen:

Ser ut som du använder dej av ett javascript bibliotek också. Jag har iallafall inte sett $get() i vanlig standard-js. Kanske skulle skriva vilket library också. Eller har jag helt åt helsike fel?

Daniel.st 2008-11-21 09:31

Citat:

Ursprungligen postat av Jan Eriksson
Citat:

Ursprungligen postat av Daniel.st
Enklare att lösa det via JavaScript än att behöva göra en postback.

Då skulle inte fråga ligga i Serversidans teknologier.
Ge Slanter ett kodexempel så blir han säkert glad.

Eftersom att han skrev att han var nybörjare kan det vara vettigt om han även får höra talas om andra alternativ som kan lösa samma problem.

TommyTisen 2008-11-21 17:53

Sorry, tänkte att den var standard. Jag kör i Visual Studio 2003/2008, så man får lite gratis.Därför tänkte jag inte på det

Här är den grymma $get-funktionen:

Kod:

function $get() {        var elements = new Array();        for (var i = 0; i < arguments.length; i++) { var element = arguments[i];
if (typeof element == 'string')        element = document.getElementById(element); if (arguments.length == 1)        return element; elements.push(element);        }        return elements;}

Även känd som bara "dollar function"...dvs. används så här: $('objectid') ... fast i mitt fall $get('objectid')

crazzy 2008-11-21 18:53

Alltså samma sak som $() i prototype.

Fast $$() är coolare. :)

quickhelp 2008-11-21 22:24

Citat:

Originally posted by TommyTisen@Nov 21 2008, 18:53
Sorry, tänkte att den var standard. Jag kör i Visual Studio 2003/2008, så man får lite gratis.Därför tänkte jag inte på det

Här är den grymma $get-funktionen:

Kod:

function $get() {        var elements = new Array();        for (var i = 0; i < arguments.length; i++) { *var element = arguments[i]; *
if (typeof element == 'string') *        element = document.getElementById(element); *if (arguments.length == 1) *        return element; *elements.push(element);        }        return elements;}

Även känd som bara "dollar function"...dvs. används så här: $('objectid') ... fast i mitt fall $get('objectid')

Eller så kan den även ersättas med:

Kod:

document.getElementById("<%= Text1.ClientID %>");


Alla tider är GMT +2. Klockan är nu 05:29.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson