这个javascript工作到一定程度,因为它会根据需要打开弹出窗口,但它们是空的!传递函数的两个缺失值的语法是什么?需要从gridview获取这两个值(lblEVENT_DATE& BoundField,其DataField为DETAILS)。正如您将看到的那样,该函数会打开一个模态弹出窗口,并由gridview中的输入按钮调用。 函数中的第三个必需值是硬编码的。
function OpenPopup(datetime, text, mode) {
if (mode == 'track') {
$('#lblDateTime').text(datetime);
$('#lblTrackingNotes').text(text);
$("#divTrackingNotes").dialog({ title: "Tracking Notes", width: 700, modal: true, });
}
else {
$('#lblRCAComments').text(text);
$("#divRCAComments").dialog({ title: "Comments", width: 700, modal: true, });
}
}
<asp:GridView ID="GridRootCause" ClientIDMode="Static" CssClass="dataTable fullWidth spaceAfter2" runat="server" AutoGenerateColumns="False" DataKeyNames="ROOT_CAUSE_IDENTIFIER,RECORD_IDENTIFIER">
<Columns>
<asp:BoundField DataField="RECORD_IDENTIFIER" ItemStyle-CssClass="hiddenColumn" HeaderStyle-CssClass="hiddenColumn" />
<asp:TemplateField HeaderText="Event Date">
<ItemTemplate>
<asp:Label ID="lblEVENT_DATE" runat="server" Text='<%# CDate(Eval("EVENT_DATE")).ToString("ddd") & " " & Eval("EVENT_DATE")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Details">
<ItemTemplate>
<asp:Label Visible="false" Wrap="true" ID="lblDetails" runat="server" />
<input type="button" class="innerButton buttonBlue" id="btnTrackingNotes" onclick="javascript: OpenPopup('','','track');" Visible="false" runat="server" value="Tracking Notes" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comments" HeaderStyle-CssClass="width150">
<ItemTemplate>
<input type="button" class="innerButton buttonBlue" id="btnComments" onclick="javascript: OpenPopup('','','comm');" Visible="false" runat="server" value="Comments" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 0 :(得分:2)
如果数据字段为EVENT_DATE
和DETAILS
,您可以这样设置onclick
事件处理程序:
onclick='<%# string.Format("OpenPopup({0}{1:ddd}{0}, {0}{2}{0}, {0}track{0});", (char)39, Eval("EVENT_DATE"), Eval("DETAILS")) %>'
此代码的一个棘手部分是在格式字符串中插入单引号,同时避免与外引号冲突。这就是我将(char)39
用于C#或chr(39)
用于VB.NET的原因。