0

次のコードをリピーターに追加しました...

<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の呼び出しに[名前]列を含めた後、リピーター行で編集アイコンが押されたときにモーダルポップアップがトリガーされなくなります。ご協力いただきありがとうございます。

 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はリピーター行の「Name」の値です。リピーターの入力ブロックの実行時の値は次のとおりです。

<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;' />
4

1 に答える 1

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は、そのようなデータバインディングを二重引用符で囲もうとすると文句を言います。

于 2013-03-26T19:02:28.577 に答える