从转发器行触发时,模态弹出窗口不起作用

时间:2013-03-26 18:39:28

标签: javascript jquery asp.net

我将以下代码添加到转发器中......

<input type="image" style="border-width:0" alt="Edit Reviewer Group" 
                               title="Edit Reviewer Group" tabindex="0" 
                               src='<%=ResolveUrl("~/css/images/icon_edit.png") %>' 
                               onclick='showNewRevewerGroupModalPanelNew(<%#DataBinder.Eval(Container.DataItem,"Id")%>, 
                                                                         <%#HttpUtility.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "Name"))%>);
                                                                          return false;' />              

在上面添加之后......编辑按钮不再显示弹出框...我将其分隔到“名称”列。在showNewRevewerGroupModalPanelNew调用中包含Name列后,当在转发器行中按下编辑图标时,模式弹出窗口被触发....感谢您的帮助!

 function showNewRevewerGroupModalPanelNew(Id, Name) 
            {
                alert(Id);
                //$find('RevListModalPopupBehavior').show();
            }

        </script>



    <asp:Repeater ID="rptReviewerList" runat="server" OnItemCommand="_Command">
                        <HeaderTemplate>
                            <ul class="standardList">
                                <li class="listHeader">
                                    <p class="revListTitle">Name</p>
                                    <p class="number">Number of Reviewers</p>
                                    <p class="date">Last Modified</p>
                                    <p class="edit">&nbsp;</p>
                                </li>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <li <%#Container.ItemIndex%2==0? "class='bg1'" : "" %>>
                            <p class="revListTitle"><%#HttpUtility.HtmlEncode((string)DataBinder.Eval(Container.DataItem,"Name"))%></p>
                            <p class="number"><%#DataBinder.Eval(Container.DataItem,"ReviewerCount")%></p>
                            <p class="date"><%#String.Format("{0:d}",DataBinder.Eval(Container.DataItem, "Modified"))%></p>
                            <p class="edit">
                            <asp:ImageButton ID="imgBtnUpdate" runat="server" ImageUrl="~/css/images/icon_update.png"  
                                             Tooltip="Update Reviewer List" AlternateText="Update Reviewer List"  
                                             CommandName="UpdateRevList" 
                                             CommandArgument='<%#DataBinder.Eval(Container.DataItem,"Id") %>'/>


                            <input type="image" style="border-width:0" alt="Edit Reviewer Group" 
                                   title="Edit Reviewer Group" tabindex="0" 
                                   src='<%=ResolveUrl("~/css/images/icon_edit.png") %>' 
                                   onclick='showNewRevewerGroupModalPanelNew(<%#DataBinder.Eval(Container.DataItem,"Id")%>, 
                                                                             <%#HttpUtility.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "Name"))%>);
                                                                              return false;' />              

                            <asp:ImageButton ID="imgBtDelete" runat="server" ImageUrl="~/css/images/icon_remove.png" Tooltip="Remove Reviewer List" AlternateText="Remove Reviewer List" CommandName="DeleteRevList" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id")%>' />
                            <cc1:ConfirmButtonExtender ID="cbxDelete" runat="server" TargetControlID="imgBtDelete" ConfirmText='<%# makeDeleteText(DataBinder.Eval(Container.DataItem, "Name").ToString()) %>'/>
                            </p>
                            </li>
                        </ItemTemplate>
                        <FooterTemplate>
                        </ul>
                        </FooterTemplate>
    </asp:Repeater>
    </ContentTemplate>
    <Triggers>
    <asp:PostBackTrigger ControlID="ibtOK"/>
    <asp:PostBackTrigger ControlID="importBtn"/>
    <asp:PostBackTrigger ControlID="editBtn"/>
    </Triggers>
    </asp:UpdatePanel>

这是Firebug告诉我的内容ReferenceError:“ABCD”未定义。但ABCD是转发器行中“名称”的值。转发器中输入块的运行时间值为:

<input type="image" style="border-width:0" alt="Edit Reviewer Group" 
                               title="Edit Reviewer Group" tabindex="0" 
                               src='/css/images/icon_edit.png' 
                               onclick='showNewRevewerGroupModalPanelNew(4, 
                                                                         ABCD);
                                                                          return false;' />

1 个答案:

答案 0 :(得分:0)

鉴于您指出的错误,我会说您的.Net代码正在转储“Name”变量而没有任何类型的引号来表明它是一个字符串,因此javascript将其解释为变量名称。

onclick='showNewRevewerGroupModalPanelNew(
    <%#DataBinder.Eval(Container.DataItem,"Id")%>,
    <%#HttpUtility.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "Name"))%>);
    return false;' /> 

此代码可能正在评估

onclick='ShowNewRevewerGroupModalPanelNew(someId, someName); return false;'

您要做的是更改外部的引号并在内部添加单曲:

onclick="showNewRevewerGroupModalPanelNew(
    <%#DataBinder.Eval(Container.DataItem,"Id")%>,
    '<%#HttpUtility.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "Name"))%>');
    return false;" /> 

这应该会产生更接近的东西:

onclick="ShowNewRevewerGroupModalPanelNew(someId, 'someName'); return false;"
当您尝试用双引号括起数据绑定时,<。> .Net会抱怨。