Problem with ImageButton.OnClientClick when DataBinding

Discussion in 'ASP .Net' started by Nathan Sokalski, Jul 31, 2007.

  1. I have the following tag in one of my DataList's ItemTemplates:

    <asp:ImageButton ID="btnViewQuestion" runat="server" BorderWidth="0"
    ImageUrl="images/qmark.gif" Height="27px" Width="26px"
    OnClientClick="window.open(<%#
    DataBinder.Eval(Container.DataItem,"questionid","'viewquestion.aspx?questionid={0}'")
    %>,'question','scrollbars=yes,width=630,height=480,location=no,menubar=no,status=no,toolbar=no');"/>

    As you can see, my goal is to use the value from the DataBinding Expression
    as the first parameter of a JavaScript window.open() method in the
    OnClientClick property of an ImageButton. However, when I run the
    application using this, I recieve the following error:

    Server Error in '/' Application.
    --------------------------------------------------------------------------------

    Parser Error
    Description: An error occurred during the parsing of a resource required to
    service this request. Please review the following specific parse error
    details and modify your source file appropriately.

    Parser Error Message: The server tag is not well formed.


    I tried to be careful using the single and double quotes, but I think
    everything is correct. Did I do something wrong in this server tag? All my
    other DataBinding Expressions work fine when I remove this tag, and the
    error says the problem is in this line, so what's the problem? Thanks.
    --
    Nathan Sokalski

    http://www.nathansokalski.com/
     
    Nathan Sokalski, Jul 31, 2007
    #1
    1. Advertising

  2. Nathan Sokalski

    chenhong Guest

    OnClientClick isn't a bindable property.
    you should build OnClientClick string in ImageButton's load event.
    Hope this will help.


    "Nathan Sokalski" <> дÈëÏûÏ¢ÐÂÎÅ:...
    >I have the following tag in one of my DataList's ItemTemplates:
    >
    > <asp:ImageButton ID="btnViewQuestion" runat="server" BorderWidth="0"
    > ImageUrl="images/qmark.gif" Height="27px" Width="26px"
    > OnClientClick="window.open(<%#
    > DataBinder.Eval(Container.DataItem,"questionid","'viewquestion.aspx?questionid={0}'")
    > %>,'question','scrollbars=yes,width=630,height=480,location=no,menubar=no,status=no,toolbar=no');"/>
    >
    > As you can see, my goal is to use the value from the DataBinding
    > Expression as the first parameter of a JavaScript window.open() method in
    > the OnClientClick property of an ImageButton. However, when I run the
    > application using this, I recieve the following error:
    >
    > Server Error in '/' Application.
    > --------------------------------------------------------------------------------
    >
    > Parser Error
    > Description: An error occurred during the parsing of a resource required
    > to service this request. Please review the following specific parse error
    > details and modify your source file appropriately.
    >
    > Parser Error Message: The server tag is not well formed.
    >
    >
    > I tried to be careful using the single and double quotes, but I think
    > everything is correct. Did I do something wrong in this server tag? All my
    > other DataBinding Expressions work fine when I remove this tag, and the
    > error says the problem is in this line, so what's the problem? Thanks.
    > --
    > Nathan Sokalski
    >
    > http://www.nathansokalski.com/
    >
     
    chenhong, Jul 31, 2007
    #2
    1. Advertising

  3. Nathan Sokalski

    Teemu Keiski Guest

    I agree that its most flexible to do in code, but OnClientClixk can be
    databound

    <asp:DataGrid ID="DataGrid1" runat="server" GridLines="Both"
    BorderWidth="0" AutoGenerateColumns="false">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:Button ID="Button1" runat="server"
    OnClientClick='<%# "alert(""" & Cstr(Container.DataItem) & """);return
    false;" %>' />
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Handles Me.Load
    Dim ints As New List(Of Integer)
    ints.Add(1)
    ints.Add(2)
    ints.Add(3)

    DataGrid1.DataSource = ints
    DataGrid1.DataBind()
    End Sub

    This would alert the integer value on Button click


    --
    Teemu Keiski
    AspInsider, ASP.NET MVP
    http://blogs.aspadvice.com/joteke
    http://teemukeiski.net

    "chenhong" <> wrote in message
    news:%...
    > OnClientClick isn't a bindable property.
    > you should build OnClientClick string in ImageButton's load event.
    > Hope this will help.
    >
    >
    > "Nathan Sokalski" <>
    > дÈëÏûÏ¢ÐÂÎÅ:...
    >>I have the following tag in one of my DataList's ItemTemplates:
    >>
    >> <asp:ImageButton ID="btnViewQuestion" runat="server" BorderWidth="0"
    >> ImageUrl="images/qmark.gif" Height="27px" Width="26px"
    >> OnClientClick="window.open(<%#
    >> DataBinder.Eval(Container.DataItem,"questionid","'viewquestion.aspx?questionid={0}'")
    >> %>,'question','scrollbars=yes,width=630,height=480,location=no,menubar=no,status=no,toolbar=no');"/>
    >>
    >> As you can see, my goal is to use the value from the DataBinding
    >> Expression as the first parameter of a JavaScript window.open() method in
    >> the OnClientClick property of an ImageButton. However, when I run the
    >> application using this, I recieve the following error:
    >>
    >> Server Error in '/' Application.
    >> --------------------------------------------------------------------------------
    >>
    >> Parser Error
    >> Description: An error occurred during the parsing of a resource required
    >> to service this request. Please review the following specific parse error
    >> details and modify your source file appropriately.
    >>
    >> Parser Error Message: The server tag is not well formed.
    >>
    >>
    >> I tried to be careful using the single and double quotes, but I think
    >> everything is correct. Did I do something wrong in this server tag? All
    >> my other DataBinding Expressions work fine when I remove this tag, and
    >> the error says the problem is in this line, so what's the problem?
    >> Thanks.
    >> --
    >> Nathan Sokalski
    >>
    >> http://www.nathansokalski.com/
    >>

    >
    >
     
    Teemu Keiski, Aug 1, 2007
    #3
  4. Nathan Sokalski

    Teemu Keiski Guest

    To add, the trick is that the databinding expression should span the entire
    property e.g "cover" it. That way it works. However, complex kind of script
    is best to build in code. With a helper function for example.


    --
    Teemu Keiski
    AspInsider, ASP.NET MVP
    http://blogs.aspadvice.com/joteke
    http://teemukeiski.net

    "chenhong" <> wrote in message
    news:%...
    > OnClientClick isn't a bindable property.
    > you should build OnClientClick string in ImageButton's load event.
    > Hope this will help.
    >
    >
    > "Nathan Sokalski" <>
    > дÈëÏûÏ¢ÐÂÎÅ:...
    >>I have the following tag in one of my DataList's ItemTemplates:
    >>
    >> <asp:ImageButton ID="btnViewQuestion" runat="server" BorderWidth="0"
    >> ImageUrl="images/qmark.gif" Height="27px" Width="26px"
    >> OnClientClick="window.open(<%#
    >> DataBinder.Eval(Container.DataItem,"questionid","'viewquestion.aspx?questionid={0}'")
    >> %>,'question','scrollbars=yes,width=630,height=480,location=no,menubar=no,status=no,toolbar=no');"/>
    >>
    >> As you can see, my goal is to use the value from the DataBinding
    >> Expression as the first parameter of a JavaScript window.open() method in
    >> the OnClientClick property of an ImageButton. However, when I run the
    >> application using this, I recieve the following error:
    >>
    >> Server Error in '/' Application.
    >> --------------------------------------------------------------------------------
    >>
    >> Parser Error
    >> Description: An error occurred during the parsing of a resource required
    >> to service this request. Please review the following specific parse error
    >> details and modify your source file appropriately.
    >>
    >> Parser Error Message: The server tag is not well formed.
    >>
    >>
    >> I tried to be careful using the single and double quotes, but I think
    >> everything is correct. Did I do something wrong in this server tag? All
    >> my other DataBinding Expressions work fine when I remove this tag, and
    >> the error says the problem is in this line, so what's the problem?
    >> Thanks.
    >> --
    >> Nathan Sokalski
    >>
    >> http://www.nathansokalski.com/
    >>

    >
    >
     
    Teemu Keiski, Aug 1, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Randy
    Replies:
    0
    Views:
    2,212
    Randy
    Apr 10, 2006
  2. Dan
    Replies:
    5
    Views:
    5,776
    Alexey Smirnov
    Feb 12, 2007
  3. =?Utf-8?B?RWFnbGVSZWRASGlnaEZseWluZ0JpcmRzLmNvbQ==

    ImageButton OnClientClick Events Not Firing on Client

    =?Utf-8?B?RWFnbGVSZWRASGlnaEZseWluZ0JpcmRzLmNvbQ==, Nov 14, 2007, in forum: ASP .Net
    Replies:
    7
    Views:
    4,935
    Aaron
    Nov 30, 2007
  4. Nathan Sokalski

    Problem with ImageButton.OnClientClick when DataBinding

    Nathan Sokalski, Jul 31, 2007, in forum: ASP .Net Web Controls
    Replies:
    3
    Views:
    747
    Teemu Keiski
    Aug 1, 2007
  5. rum23

    asp:ImageButton and onClientClick and page refresh

    rum23, Nov 28, 2008, in forum: ASP .Net Web Controls
    Replies:
    1
    Views:
    628
Loading...

Share This Page