【问题标题】:Get Dropdown selected text via Gridview javascript onclick通过 Gridview javascript onclick 获取下拉选择的文本
【发布时间】:2014-11-07 14:55:08
【问题描述】:

我有一个带有几个标签和两个 DropDownList 控件的 GridView。在每一行的末尾,我有一个“打印”按钮(普通表单按钮,而不是 asp 按钮)。 onclick 事件生成 javascript 并从网格中传递值。

如何获取下拉列表值?

<asp:TemplateField ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <input type="button" 
            style="font-size: 18px" 
            onclick="javascript:jsWebClientPrint.print('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&lblNDC=<%# Eval("CODE1") %>    ' + '&unit=<%# Eval("ddUnit.Text") %>    ');" 
            value="Print" />
    </ItemTemplate>
</asp:TemplateField>

它不喜欢尝试 Eval ddUnit.Text,但这是我试图作为 URL 变量传递的值。

【问题讨论】:

  • 你在使用库 jquery 对吗?

标签: asp.net gridview


【解决方案1】:

这几乎不是最优雅的解决方案,但您可以继续沿着 jquery 路径获取 DropDownList 值:

<asp:TemplateField ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <input type="button" style="font-size:18px" onclick="javascript:jsWebClientPrint.print('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&lblNDC=<%# Eval("CODE1") %>' + '&unit=' + $('#<%# ((GridViewRow)Container).FindControl("ddUnit").ClientID %>').text());" value="Print" />
    </ItemTemplate>
</asp:TemplateField>

【讨论】:

  • 这几乎奏效了。它不采用所选值,而是为下拉列表传递所有可能的值。我尝试了 .text 和 .value,但都没有成功。
  • $('# option:selected').val();你让我走上正轨。非常感谢。
  • 啊!当然option:selected...我的错。很高兴它让你继续前进。
【解决方案2】:

试试这个。

标记

<asp:TemplateField>
    <ItemTemplate>
        <asp:DropDownList CssClass="ddlUnit" runat="server">
            <asp:ListItem Text="text1" Value="1" />
            <asp:ListItem Text="text2" Value="2" />
        </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <input type="button"
            style="font-size: 18px"
            onclick='<%# "MyPrintWrapper(this, \""+ Eval("CODE1") + "\")" %>'
            value="Print" />
    </ItemTemplate>
</asp:TemplateField>

JavaScript

function MyPrintWrapper(elm, code) {
    var paramString = 'useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked')
        + '&printerName=' + $('#installedPrinterName').val()
        + '&lblNDC=' + code
        //take the clicked button, find its row, 
        //then find the dropdownlist using its class name
        + '&unit=' + $(elm).closest("tr").find(".ddlUnit").val();
    //console.log(paramString);
    jsWebClientPrint.print(paramString);
}

在这里,我们为下拉列表创建了一个类名和一个包装器 js 函数,以便标记看起来更清晰。

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 2011-03-23
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多