我有一个带有几个标签和两个DropDownList控件的GridView。在每一行的最后,我有一个" Print"按钮(普通表格按钮,不是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变量的值。
答案 0 :(得分:2)
这不是最优雅的解决方案,但您可以继续沿着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>
答案 1 :(得分:0)
试试这个。
标记
<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函数创建了一个类名,以便标记看起来更清晰。