Oprettet ons. d. 28. april 2010 kl. 13:17:27

robinhansen (nedlagt brugerprofil)
robinhansen (nedlagt brugerprofil) (9.030 point. Point ude: 570)

Hvor skal jeg bruge return false;?

Jeg har en knap (btn) i min repeater som igen befinder sig i mit UpdatePanel. Når jeg trykker på knappen skal det lille JavaScript herunder gendanne repeaternes layout (nærmere bestemt skal tabel rækkernes 'class'es gendannes). Scriptet fungere fint nok hvis jeg tilføjer "return false;" i knappens OnClientClick-attribut, men så sker der bare intet i min repeater... *suk* - jeg har prøvet alle på alle mulige måder at bruge 'return false;' i scriptet i stedet uden held - hva' gør jeg forkert...? ~:]

function reLoad() {
    $("#tb-1 tr:even, #tb-2 tr:even").addClass("row");
    $("#tb-1 tr, #tb-2 tr").mouseover(function() {
        $(this).addClass("row-over");
    }).mouseout(function() {
        $(this).removeClass("row-over");
    });
}

<asp:ImageButton ID="btn" runat="server" ToolTip="Rediger" ImageUrl="~/Admin/images/icons/edit.png" CommandArgument="editCommand" CommandName="Action" OnClientClick="reLoad('tb-1');" />

Skrevet ons. d. 28. april 2010 kl. 14:34:27| #1

olebole
olebole (214.028 point)
<ole>

Hmmmm ... det er ofte besværligt, når man lader vanskelligt gennemskuelige libraries/frameworks til at skrive ens kode  :o|

Du kan prøve noget i stil med:
function reLoad() {
    $("#tb-1 tr:even, #tb-2 tr:even").addClass("row");
    $("#tb-1 tr, #tb-2 tr").mouseover(function(e) {
        $(this).addClass("row-over");
        if (e) {
        e.stopPropagation();
        e.preventDefault();
    } else {
            event.cancelBubble = true;
            event.returnValue = false;
    };
    }).mouseout(function(e) {
        if (e) {
        e.stopPropagation();
        e.preventDefault();
    } else {
            event.cancelBubble = true;
            event.returnValue = false;
    };
        $(this).removeClass("row-over");
    });
}


/mvh
</bole>

Skrevet ons. d. 28. april 2010 kl. 14:43:03| #2

Jeg kan kun give dig helt ret mht. div. libraries/frameworks. Scriptet ovenover virker desværre ikke anderledes end dét jeg selv forsøgte med... ~:|

Skrevet tor. d. 29. april 2010 kl. 00:22:31| #3

olebole
olebole (214.028 point)
Kan du lægge et link til siden eller et eksempel?

Skrevet tor. d. 29. april 2010 kl. 08:17:26| #4

Jeg har sidens kildekode og codebehind her

default.aspx:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ (...)
<html xmlns="http://www.w3.org/ (...)
<head runat="server">
   
    <title>JQuery UI Dialog Demo</title>
   
    <link href="css/ui-lightness/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css" />
    <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function() {
            //setup new person dialog
            $('#newPerson').dialog({
                autoOpen: false,
                draggable: true,
                title: "Add New Person",
                open: function(type, data) {
                    $(this).parent().appendTo("form");
                }
            });

            //setup edit person dialog
            $('#editPerson').dialog({
                autoOpen: false,
                draggable: true,
                title: "Edit Person",
                open: function(type, data) {
                    $(this).parent().appendTo("form");
                }
            });

            //alt. rows in grid
            $("#tb-1 tr:even, #tb-2 tr:even").addClass("row");
            $("#tb-1 tr, #tb-2 tr").mouseover(function() {
                $(this).addClass("row-over");
            }).mouseout(function() {
                $(this).removeClass("row-over");
            });
        });

        function showDialog(id) {
            $('#' + id).dialog("open");
        }

        function closeDialog(id) {
            $('#' + id).dialog("close");
        }

        function reLoad() {
            //return confirm('Hello!');
            $("#tb-1 tr:even, #tb-2 tr:even").addClass("row");
            $("#tb-1 tr, #tb-2 tr").mouseover(function() {
                $(this).addClass("row-over");
            }).mouseout(function() {
                $(this).removeClass("row-over");
            });
        }
   
    </script>
   
<style type="text/css">
table#tb-1{
    margin:0;
    padding:0;
    border: 1px solid #dbdbdb;
}
thead.th1{
    background:#e9e9e9;
}
th.row{
    font-weight:bold;
    cursor:pointer;   
}
th.row-over{
    background:#e9e9e9;
}
tr.row{
    background:#e9e9e9;
}
tr.row-over{
    background:#fffcce;
}

    </style>
</head>
<body>
    <form id="frmJqueryDialogDemo" runat="server">
        <asp:ScriptManager ID="mainScriptManager" runat="server"></asp:ScriptManager>
        <input id="btnAdd" type="button" onclick="showDialog('newPerson');" value="Add New Person" />
        <hr />
        <asp:UpdatePanel ID="upGrid" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:Repeater ID="gvUsers" runat="server" onitemcommand="Action">
                <HeaderTemplate><table id="tb-1" cellpadding="0" cellspacing="0" border="0">
                        <tr>
                            <th>Names</th>
                            <th> </th>
                        </tr>
                    </HeaderTemplate>                   
                    <ItemTemplate>
                        <tr>
                            <td>
                                <asp:Literal ID="Literal1" Text='<%# Eval("Value") %>' runat="server" /></td>
                            <td><asp:ImageButton ID="lbName" CommandArgument='<%# Eval("Key") %>' ImageUrl="~/edit.png" OnClientClick="showDialog('editPerson');" onclick="lbName_Click" runat="server"  /></td>

                        </tr>
                    </ItemTemplate>
                <FooterTemplate></table></FooterTemplate>
            </asp:Repeater>
        </ContentTemplate>
        </asp:UpdatePanel> 
           
        <div id='newPerson'>
            <asp:UpdatePanel ID="upNewUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblNewName" runat="server" AssociatedControlID="txtNewName" Text="Name"></asp:Label>
                <asp:TextBox ID="txtNewName" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="reqName1" ControlToValidate="txtNewName" ValidationGroup="Add" runat="server" ErrorMessage="Name is required"></asp:RequiredFieldValidator>
                <asp:Button ID="btnAddSave" OnClick="btnAddSave_Click" runat="server" Text="Save" />
            </ContentTemplate>
            </asp:UpdatePanel>
        </div>
       
        <div id='editPerson'>
            <asp:UpdatePanel ID="upEditUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
            <ContentTemplate>     
                <asp:Label ID="lblEditName" runat="server" AssociatedControlID="txtEditName" Text="Name"></asp:Label>
                <asp:TextBox ID="txtEditId" Visible="false" runat="server"></asp:TextBox>
                <asp:TextBox ID="txtEditName" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="reqName2" ControlToValidate="txtEditName" ValidationGroup="Edit" runat="server" ErrorMessage="Name is required"></asp:RequiredFieldValidator>
                <asp:Button ID="btnEditSave" runat="server" Text="Save"
                    onclick="btnEditSave_Click" />
            </ContentTemplate>
            </asp:UpdatePanel>           
        </div>       
    </form>
</body>
</html>

default.aspx.cs:
using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : Page
{
    private Dictionary<Guid, string> Names
    {
        get { return (Dictionary<Guid, string>) ViewState["Names"]; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            /*
            * to keep this sample really simple, we will populate some
            * sample data in a Dictionary and store in the viewstate
            */
            var names = new Dictionary<Guid, string>
                            {
                                {Guid.NewGuid(), "John"},
                                {Guid.NewGuid(), "Smith"},
                                {Guid.NewGuid(), "Arther"},
                                {Guid.NewGuid(), "Hari"}
                            };
            //store the list in the viewstate.
            ViewState.Add("Names", names);

            //init grid
            LoadNames();
        }
    }

    private void LoadNames()
    {
        //databind grid
        gvUsers.DataSource = ViewState["Names"];
        gvUsers.DataBind();
    }

    protected void btnAddSave_Click(object sender, EventArgs e)
    {
        Page.Validate("Add");

        if (Page.IsValid)
        {
            Names.Add(Guid.NewGuid(), txtNewName.Text);
            LoadNames();
            CloseDialog("newPerson");

            //reset
            txtNewName.Text = string.Empty;

            //refresh grid
            upGrid.Update();
        }
    }

    protected void btnEditSave_Click(object sender, EventArgs e)
    {
        Page.Validate("Edit");

        if (Page.IsValid)
        {
            Names[new Guid(txtEditId.Text)] = txtEditName.Text;
            LoadNames();
            CloseDialog("editPerson");

            //reset
            txtEditId.Text = string.Empty;
            txtEditName.Text = string.Empty;

            //refresh grid
            upGrid.Update();
        }
    }

    /// <summary>
    /// Populate the Dialog with the existing name
    /// and update the edit panel
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void lbName_Click(object sender, EventArgs e)
    {
        var editLink = ((ImageButton) sender);
        txtEditId.Text = editLink.CommandArgument;
        txtEditName.Text = Names[new Guid(editLink.CommandArgument)];
        upEditUpdatePanel.Update();
    }


    /// <summary>
    /// Registers client script to close the dialog
    /// </summary>
    /// <param name="dialogId"></param>
    private void CloseDialog(string dialogId)
    {
        string script = string.Format(@"closeDialog('{0}')", dialogId);
        ScriptManager.RegisterClientScriptBlock(this, typeof (Page), UniqueID, script, true);
    }
    protected void Action(object source, RepeaterCommandEventArgs e)
    {

    }
}

Skrevet tor. d. 29. april 2010 kl. 09:43:15| #5

olebole
olebole (214.028 point)
Det hjælper mig ikke så meget. Jeg har brug et link til et 'virkende' eksempel  =)

Skrevet tor. d. 29. april 2010 kl. 11:15:16| #6


Skrevet tor. d. 29. april 2010 kl. 12:38:47| #7

olebole
olebole (214.028 point)
Jeg har som sagt brug for et virkende eksempel på nettet. Jeg har ikke tid til selv at sidde og fedte med det  =)

Skrevet tor. d. 02. september 2010 kl. 13:50:48| #8


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Tabindex!

Oprettet den 11. februar 2012 kl. 11.37
thomasfricke giver 30 point for svar | Giv et svar »

skal frem brugernavn ned og sige om den har eller ej

Oprettet den 11. februar 2012 kl. 02.44
tobrukDk giver 20 point for svar | Giv et svar »

Muligvis script-konfllikt i jquery. Min slider vises...

Oprettet den 9. februar 2012 kl. 23.00
Peterjakobsen giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger