将绑定值传递给GridView中调用的Javascript函数

时间:2016-06-16 00:56:50

标签: javascript jquery asp.net gridview

这个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>

1 个答案:

答案 0 :(得分:2)

如果数据字段为EVENT_DATEDETAILS,您可以这样设置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的原因。